こんにちは。
いつも勉強させてもらっております。
有難う御座います。
文字列の分割方法について、ご教示頂きたく思います。
よろしくご指導のほどお願いします。
使用しているのは「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
StrictDelimiterプロパティをTrueに設定して下さい。
編集 削除一応参考にどうぞ
http://www.wwlnk.com/boheme/delphi/tips/tec0800.htm
すぐ最近の書き込みに「CSVファイルの読み込み」と言うのがあります。
それを参考にして欲しいのですが、結論として半角スペースが区切り文字として認識されるからです。
CommatextというのはDelimiterを「,」、QuoteCharを「"」としたDelimitedTextと同じなので、
半角スペースでの動作も同じになります。
と言うことで、解決方法は
https://www.petitmonte.com/bbs/answers?question_id=6837
https://www.petitmonte.com/bbs/answers?question_id=2926
と同じになりますね。
Del2006以降はStrictDelimiterがあるんですね。。。
編集 削除皆様。
迅速にご教示頂き大変感謝しています。
無事、StrictDelimiterプロパティをTrue にて解決出来ました。
ありがとうございました。