TStringListを用いてカンマ区切りテキストを出力する処理を作成しました。
(文字列の引用符は出力しません)
この時、Appendした文字列に半角スペースが入っているとQuoteCharが出力されてしまいます。
TSTringListで文字列引用符を出力せずにカンマ区切りテキストを出力する方法をご教授下さい。
ex.
lstCSV := TStringList.Create;
try
lstCSV.Delimiter := ',';
lstCSV.Append('aaa');
lstCSV.Append('999');
lstCSV.Append('1');
lstCSV.Append(' 99');
lstCSV.Append('99 ');
lstCSV.Append('ああ');
lstCSV.Append(' あ');
ShowMessage(lstCSV.DelimitedText);
finally
lstCSV.Free;
end;
実行結果「aaa,999,1," 99","99 ",ああ, あ」
環境
OS:Windows2000 Professional SP4
Delphi7(Build 8.1)
正式な処理は分かりませんが,
lstCSV.QuoteChar := #32;
の一文追加で引用符の変更も一つの手段?
みなさん駄目女 川 ’ー’川です。
私の環境では「StringReplace」という関数が追加されており、
{CSVファイル}
procedure TForm1.CreateCSVFiles;
begin
try
lstCSV := TStringList.Create;
lstCSV.Delimiter := ',';
lstCSV.Append('aaa');
lstCSV.Append('999');
lstCSV.Append('1');
lstCSV.Append(' 99');
lstCSV.Append('99 ');
lstCSV.Append('ああ');
lstCSV.Append(' あ');
//ここ↓
//:*:・。,☆゜'・:*:・。,ヽ(・∀・)人(・∀・)ノ ,。・:*:'☆,。・:*:
ShowMessage(StringReplace(lstCSV.DelimitedText,'"','',[rfReplaceAll]));
//:*:・。,☆゜'・:*:・。,ヽ(・∀・)人(・∀・)ノ ,。・:*:'☆,。・:*:
lstCSV.SaveToFile(Edit1.Text);
finally
lstCSV.Free;
end;
end;
これでいけました。
Ruさん、駄目女 川 ’ー’川 さん
回答有難う御座いました。
今回の処理ではデータにダブルクォーテーションが入る事はない、
と思われるため、StringReplace系の処理で対応するようにします。
Ruさんにご提示頂いた方法は以前、試したのですが
半角スペースが前後に入ってしまうため断念した経緯があります。
また、宜しくお願いします。
ツイート | ![]() |