喫茶XRAYトップページ

[スレッド全体
]

[3648] Re4:Delphi XE情報返信 削除
2010/9/5 (日) 17:31:47 taka
▼ たてぐや@ガリガリ中さん
>
>  実際、テキスト処理に関しては弱いというか関数が少ないですね。
> BASICのRIGHT$とかMID$に当たる関数は自作して使っています。でな
> いとコードが汚く長くなってしまいます。
>  正規表現が使えるといろいろできそうな気がします。Delphi6でも
> 正規表現は関数を書けば実現できるのは解っているのですが、なかな
> か書き始める気になりません。
>

そうですね。付属のVB関数もどきは、欠陥がありますからね
自作の方が安心ですね。

とりあえず、VBもどき関数のまとめ。

関数
Visual Basic    Delphi(StrUtilsユニット)
 Left         LeftStr , AnsiLeftStr
 Mid          MidStr  , AnsiMidStr
 Right        RightStr, AnsiRightStr
 LeftB        LeftBStr
 MidB         MidBStr
 RightB       RightBStr
 AnsiLeftStrは、LeftStrが呼び出されるようなので結果は同じです。

※Delphiの場合
 【string型】
  string型の文字列に対して、操作をする場合、
  WideStringで自動変換をしてごまかしているようなので
  正常でない文字列(#$0とか制御記号を含む場合やOSと文字コードが違う場合など)では、
  データが破損・消失するとこがります。
    この関数の何が問題かというと
     勝手に自動型変換をつかって
     文字列が破損しても例外が発生しない点です。
  ヘルプの説明では、
  string型は、自動型変換が介入することにふれていない。重大なミスがあります。
  ソースで定義検索でつつく癖のない場合、きっと気がつかないでしょう。
  怪しい場合は、バイト単位で処理するほうが無難です。
  バイト単位の場合は、LeftBStr,MidBStr,RightBStr
 【WideString型】
  WideString型の文字列で宣言している場合は、正常に動作します。


[3649] Delphiの文字列処理関数返信 削除
2010/9/6 (月) 20:06:25 Mr.XRAY
> 関数
> Visual Basic    Delphi(StrUtilsユニット)
>  Left         LeftStr , AnsiLeftStr
>  Mid          MidStr  , AnsiMidStr
>  Right        RightStr, AnsiRightStr
>  LeftB        LeftBStr
>  MidB         MidBStr
>  RightB       RightBStr
>  AnsiLeftStrは、LeftStrが呼び出されるようなので結果は同じです。
>


こんなのがあったんですね.
Delphi 6のヘルプにありました.古いバージョンにはないのかな?
ついでに文字列処理ルーチンをみたら,見たこともない関数が(笑)


[3650] Re:Delphiの文字列処理関数返信 削除
2010/9/7 (火) 22:38:40 たてぐや@ガリガリ中 〔HomePage
▼ Mr.XRAYさん

> ついでに文字列処理ルーチンをみたら,見たこともない関数が(笑)

 そういうのってありますよね。いつも自分でコードを書いていたのに
たまたまヘルプを読んだら同等の関数がすでにあったりして… 無駄な
コードを書いているのは私です。(笑)

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82