文字列を任意文字で分割するには?(Delphi2010)

解決


シン  2010-02-16 16:25:25  No: 37642  IP: 192.*.*.*

こんにちは。
いつも勉強させてもらっております。
有難う御座います。
文字列の分割方法について、ご教示頂きたく思います。
よろしくご指導のほどお願いします。
使用しているのは「Delphi2010」です。

以下のように、文字列を  |  で分割したいと考えております。
しかしながら、表示される結果は・・・
  番号:1
  日付:2009/09/10
  氏名:(火)
  メモ:21:48
となってしまいます。
どこが原因でしょうか?


var
  sl:TStringList;
  i :Integer;
begin
    sl:=TStringList.Create;
    sl.Delimiter:= '|';
    sl.DelimitedText:= '1|2009/09/10 (火) 21:48|山下|花の名前|チューリップ<br>ひまわり|';
    for i:= 0 To sl.Count-1 do
    begin
  Memo1.Clear;
  Memo1.Lines.Add('番号:'+sl.Strings[0]);
  Memo1.Lines.Add('日付:'+sl.Strings[1]);
  Memo1.Lines.Add('氏名:'+sl.Strings[2]);
  Memo1.Lines.Add('メモ:'+sl.Strings[3]);
    end;
    sl.Free;
end;
//参考URL:http://dp25299446.lolipop.jp/delphi_tips/tips0024.html

編集 削除
jazzin  2010-02-16 16:37:16  No: 37643  IP: 192.*.*.*

StrictDelimiterプロパティをTrueに設定して下さい。

編集 削除
Ru  2010-02-16 16:42:15  No: 37644  IP: 192.*.*.*

一応参考にどうぞ
 http://www.wwlnk.com/boheme/delphi/tips/tec0800.htm

編集 削除
Kenny  2010-02-16 16:47:59  No: 37645  IP: 192.*.*.*

すぐ最近の書き込みに「CSVファイルの読み込み」と言うのがあります。
それを参考にして欲しいのですが、結論として半角スペースが区切り文字として認識されるからです。
CommatextというのはDelimiterを「,」、QuoteCharを「"」としたDelimitedTextと同じなので、
半角スペースでの動作も同じになります。
と言うことで、解決方法は
https://www.petitmonte.com/bbs/answers?question_id=6837
https://www.petitmonte.com/bbs/answers?question_id=2926
と同じになりますね。

編集 削除
Kenny  2010-02-16 16:52:46  No: 37646  IP: 192.*.*.*

Del2006以降はStrictDelimiterがあるんですね。。。

編集 削除
シン  2010-02-16 17:23:22  No: 37647  IP: 192.*.*.*

皆様。
迅速にご教示頂き大変感謝しています。
無事、StrictDelimiterプロパティをTrue にて解決出来ました。
ありがとうございました。

編集 削除