今回はTStrings(TStringList等)の
CommaTextの活用術についてご紹介いたします。
CSV取込を行う際などにカンマ区切り文字列の取得で重宝するCommaTextですが、
- 「ダブルクォーテーションで囲まないと半角スペースでも区切られる」
- 「カンマ以外の文字でも区切りたい」
といったお悩みはございませんでしょうか。
<半角スペースで区切らせない方法>
DelphiのTStringsでCommaTextを使用する場合、
ダブルクォーテーションで囲まれない半角スペースおよびカンマは
デフォルトで区切り文字と見なされます。
TStringsのStrictDelimiterプロパティをTrueに設定することで、
カンマ以外の文字で区切らないように指定できます。
<カンマ以外の任意の文字で区切らせる方法>
また、タブ文字などカンマ以外の文字を区切り文字に設定したい場合は
同じTStringsのDelimitedTextを使用します。
DelimitedTextでは、
Delimiterプロパティで指定した任意の1文字を区切り文字として扱います。
(タブ区切りの場合はタブ文字を示す『#9』を指定します。)
こちらもCommaTextと同様、StrictDelimiterがFalseになっていると、
ダブルクォーテーションで囲まれない半角スペースでも区切られます。
StrictDelimiterがTrueなら、Delimiterの文字のみで区切られます。
今回紹介した各プロパティはTStringsが持っているプロパティなので、
それを継承しているクラスやプロパティであれば、TStringList以外にも、
TMemo.LinesやTComboBox.Itemsなどの箇所でもそれぞれ利用可能です。
(ミガロ.情報マガジン「MIGARO News!!」Vol.222 2019年10月号より)