TListViewの内容をファイルに保存するには?

解決


たなか  2003-07-10 11:42:06  No: 4076

ViewStyleがvsReportのTListViewの内容をテキストファイルに保存したいのですが、例えば
aaa bbb
ccc ddd
eee fff
と、ListViewに入っていた場合にテキストファイルに
aaa,bbb
ccc,ddd
eee,fff
と保存するにはどのようにすればいいのでしょうか?
ご存知の方がいましたら、教えてください。
過去ログなど色々探してみましたが見つけられませんでした。(探し方がわるいのかも…)
よろしくお願いします。


にしの  2003-07-10 17:26:24  No: 4077

その形式では、ごりごり書くしかないですね。
机上で申し訳ありませんが、次のような形になると思います。
# 動作は未確認です

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;


たなか  2003-07-10 22:19:24  No: 4078

さっそくの返答ありがとうございます。
上に書いていただいたソースを参考にして下記のように書いて実行したところ例外でとまってしまいました。
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のところでやるのがいけないのかと思い、色々やってみたのですがやはり例外が出てとまってしまいます。
どこがいけないのでしょうか?教えてください。よろしくお願いします。


ドルフィン  2003-07-10 22:34:00  No: 4079

for i := 0 to ListView1.Items.Count do
ではなくて
for i := 0 to ListView1.Items.Count - 1 do
ですね。


ドルフィン  2003-07-10 22:34:01  No: 4080

for i := 0 to ListView1.Items.Count do
ではなくて
for i := 0 to ListView1.Items.Count - 1 do
ですね。


ドルフィン  2003-07-10 22:35:56  No: 4081

ごめんなさい、
送信ボタンを2回押してしまったようですね.


たなか  2003-07-10 23:52:33  No: 4082

ドルフィンさんの指摘どおりに修正して実行したら例外もなく実行できました。
にしのさん、ドルフィンさんどうもありがとうございました。またよろしくお願いします。


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

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






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