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

解決


うーん  2010-05-28 04:43:01  No: 38559

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

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-28 04:51:49  No: 38560

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


うーん  2010-05-28 05:24:30  No: 38561

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


時分割  2010-05-28 05:55:32  No: 38562

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

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


うーん  2010-05-28 06:14:06  No: 38563

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

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


KHE00221  URL  2010-05-28 11:30:54  No: 38564

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

なら

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

でいいんじゃないか?


うーん  2010-05-29 02:16:24  No: 38565

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

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


うーん  2010-05-29 03:51:20  No: 38566

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加