文字列の分割がうまくいきません

解決


うーん  2010-05-27 19:43:01  No: 38559  IP: 192.*.*.*

文字列をタブで分割し、一番前の部分を取得しようとしていますが、うまくいかずスペースで分割されてしまいます。
どこか間違っているのでしょうか?


function TForm1.takeString(St: String): String;
var
 sl:TStringList;
 i:Integer;
begin
 sl:=TStringList.Create;
 sl.Delimiter:= #$9;
 sl.DelimitedText:= St;
 Result := sl.Strings[0];
 sl.Free;
end;

編集 削除
DELPON  2010-05-27 19:51:49  No: 38560  IP: 192.*.*.*

StrictDelimiterを見てください
http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/Classes_TStrings_StrictDelimiter.html

編集 削除
うーん  2010-05-27 20:24:30  No: 38561  IP: 192.*.*.*

すばやい回答ありがとうございます。
sl.StrictDelimiter := true;
としてみたのですが、エラー(赤い波線)が出ます。
Delphi2005なのでもしかしたら対応していないのかと思って調べてみたのですが...よくわかりません。

編集 削除
時分割  2010-05-27 20:55:32  No: 38562  IP: 192.*.*.*

http://www.watercolor-city.net/blog/sb.cgi?eid=27

ここの中ほどをご覧あれ。2006からです。

編集 削除
うーん  2010-05-27 21:14:06  No: 38563  IP: 192.*.*.*

>ここの中ほどをご覧あれ。2006からです。

ありがとうございます。
ということは、スペースをいったん他の文字に変換するぐらいしかないということでしょうか?

編集 削除
KHE00221  URL  2010-05-28 02:30:54  No: 38564  IP: 192.*.*.*

>文字列をタブで分割し、一番前の部分を取得しようとしていますが

なら

function Take(Text:String; Delimiter: String = #8): String;
begin
    Result := Copy(Text,1,Pos(Delimiter,Text)-1);
end;

でいいんじゃないか?

編集 削除
うーん  2010-05-28 17:16:24  No: 38565  IP: 192.*.*.*

>function Take(Text:String; Delimiter: String = #8): String;

#8→#9ですね。
うまくいきました。
皆さん、ありがとうございます。

編集 削除
うーん  2010-05-28 18:51:20  No: 38566  IP: 192.*.*.*

ごめんなさい。
解決時のチェック忘れていました。

編集 削除