TListViewでCSVファイルを高速に表示したいのですが、
どうすればよいのでしょうか。
(TRichEditの場合はTMemoryStreamにデータを書き込んでから
LoadFromStreamで高速に表示できるようですが、同じように
できないのでしょうか?)
ファイルはCSVファイルになっていて、X=66,Y=3500です。
TStringListで読込んでListViewに表示しようとしているのですが、
以下のプログラムでは非常に時間がかかっています。
以下、プログラム(FData,TempList は TStringList です)
FData.LoadFromFile(FileName);
for i := 1 to FData.Count do begin
TempList.Text := AnsiReplaceText(FData.Strings[i - 1], ',', #13#10);
ListItem := ListView.Items.Add;
ListItem.Caption := TempList.Strings[0];
TempList.Delete(0);
LIstItem.SubItems.Text := TempList.Text;
end;
>以下のプログラムでは非常に時間がかかっています。
所要時間はいかほど?
ListViewっていうのは 項目を追加するときに再描画などが走ってしまいどうしても 遅くなってしまいます。なので
FData.LoadFromFile(FileName);
ListItem.BeginUpdate(); ・・・。
for i := 1 to FData.Count do begin
・・・・
end;
ListItem.EndUpdate(); ・・・「
上記のi) ii)を追加すれば再描画が制限されて処理時間が短縮されると思いますよ。 それにしても 66*3500っていう時点で時間がかかる当たり前だと思いますがね・・・・もし上記の方法でうまくいったなら どれくらい速くなったのかを教えて頂きたいものですm(_ _)m
文字化けしてすいません。プログラム部分は以下の通りです
FData.LoadFromFile(FileName);
ListItem.BeginUpdate(); ・・・i)
for i := 1 to FData.Count do begin
・・・・
end;
ListItem.EndUpdate(); ・・・ii)
ツイート | ![]() |