ViewStyleがvsReportのTListViewの内容をテキストファイルに保存したいのですが、例えば
aaa bbb
ccc ddd
eee fff
と、ListViewに入っていた場合にテキストファイルに
aaa,bbb
ccc,ddd
eee,fff
と保存するにはどのようにすればいいのでしょうか?
ご存知の方がいましたら、教えてください。
過去ログなど色々探してみましたが見つけられませんでした。(探し方がわるいのかも…)
よろしくお願いします。
その形式では、ごりごり書くしかないですね。
机上で申し訳ありませんが、次のような形になると思います。
# 動作は未確認です
var
FileStrings: TStringList; // これを保存
LineStrings: TStringList; // これが各行
i: integer;
begin
FileStrings := TStringList.Create;
LineStrings := TStringList.Create;
for i := 0 to ListView.Items.Count do
begin
LineStrings.Assign(ListView.Items.Item[i].SubItems);
LineStrings.Insert(0, ListView.Items.Item[i].Caption);
FileStrings.Add(LineStrings.CommaText);
end;
try
FileStrings.SaveToFile('Filename');
finally
LineStrings.Free;
FileStrings.Free;
end;
end;
さっそくの返答ありがとうございます。
上に書いていただいたソースを参考にして下記のように書いて実行したところ例外でとまってしまいました。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
FSL: TStringList;
LSL: TStringList;
i: integer;
begin
FSL := TStringList.Create;
LSL := TStringList.Create;
for i := 0 to ListView1.Items.Count do
begin
LSL.Assign(ListView1.Items.Item[i].SubItems);
LSL.Insert(0, ListView1.Items.Item[i].Caption);
FSL.Add(LSL.CommaText);
end;
try
FSL.SaveToFile('aaa.txt');
finally
LSL.Free;
FSL.Free;
end;
end;
例外が出た箇所は
LSL.Assign(ListView1.Items.Item[i].SubItems);
のところです。FormCloseのところでやるのがいけないのかと思い、色々やってみたのですがやはり例外が出てとまってしまいます。
どこがいけないのでしょうか?教えてください。よろしくお願いします。
for i := 0 to ListView1.Items.Count do
ではなくて
for i := 0 to ListView1.Items.Count - 1 do
ですね。
for i := 0 to ListView1.Items.Count do
ではなくて
for i := 0 to ListView1.Items.Count - 1 do
ですね。
ごめんなさい、
送信ボタンを2回押してしまったようですね.
ドルフィンさんの指摘どおりに修正して実行したら例外もなく実行できました。
にしのさん、ドルフィンさんどうもありがとうございました。またよろしくお願いします。
ツイート | ![]() |