CSVのファイル出力

解決


もうすぐ中級者  2009-08-13 04:59:45  No: 35404

[,]で区切られた文字列を文字列リストに入れるのに以下のようにしました。

  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';
となってほしいものですが、
そういうものはないんですか?


もうすぐ中級者  2009-08-13 05:03:33  No: 35405

追記ですが

GetStr := AnsiReplaceText(SList, #13#10, ',');
でもできるようですが

AnsiReplaceText の処理って非常に遅くて
使い物になりませんでした。

それから、先の記述で := を = とか
'' を "" とかで記述してしまいました。
どうもすみません。


igy  2009-08-13 05:27:26  No: 35406

以下のようなコードで確認してみるのは、いかがですか?

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;


もうすぐ中級者  2009-08-17 17:23:33  No: 35407

返事遅くなってすみません。

私の勘違いだったのでしょうか。
すみません。
igy さんのコードでは確かに
変更されてますよね。
お騒がせしてどうもすみませんでした。

こんなばかに付き合ってくださって
どうもありがとうございました。

もっと、注意しなきゃだめですね。
自己嫌悪・・・


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

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






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