[,]で区切られた文字列を文字列リストに入れるのに以下のようにしました。
TStringList *SList = TStringList.Create;
try
SList.Delimiter = ","
SList.DelimitedText = 'ABC,DEF,GHI,JKL';
finally
SList.Free;
end;
[,]で区切られた文字列を出力するにはどうすればよいのでしょうか?
SList.Count 分ループをまわしてつなげるしかないですか?
また、
SList.DelimitedText = 'ABC,DEF,GHI,JKL';
を実行した後
SList.DelimitedText も SList.Text も
同じ内容になってしまうのですがそういうものですか?
SList.Delimiter = ","
SList.DelimitedText = 'ABC,DEF,GHI,JKL';
とすれば
SList.Text = 'ABC' #13#10 'DEF' #13#10 'GHI'・・・
SList.Strings[0] = 'ABC'
SList.Strings[1] = 'DEF'
SList.Strings[2] = 'GHI'
になるのはわかりますが、
たとえば
SList.Strings[1] = 'JJJ'
とすれば、
SList.DelimitedText = 'ABC,JJJ,GHI,JKL';
となってほしいものですが、
そういうものはないんですか?
追記ですが
GetStr := AnsiReplaceText(SList, #13#10, ',');
でもできるようですが
AnsiReplaceText の処理って非常に遅くて
使い物になりませんでした。
それから、先の記述で := を = とか
'' を "" とかで記述してしまいました。
どうもすみません。
以下のようなコードで確認してみるのは、いかがですか?
procedure TForm1.Button2Click(Sender: TObject);
var
SList: TStringList;
begin
SList := TStringList.Create;
try
SList.Delimiter := ',';
SList.DelimitedText := 'ABC,DEF,GHI,JKL';
ShowMessage(SList.Text);
ShowMessage(SList.DelimitedText);
SList.Strings[1] := 'JJJ';
ShowMessage(SList.Text);
ShowMessage(SList.DelimitedText);
finally
SList.Free;
end;
end;
返事遅くなってすみません。
私の勘違いだったのでしょうか。
すみません。
igy さんのコードでは確かに
変更されてますよね。
お騒がせしてどうもすみませんでした。
こんなばかに付き合ってくださって
どうもありがとうございました。
もっと、注意しなきゃだめですね。
自己嫌悪・・・
ツイート | ![]() |