16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"レコード型データの読み書き(TFlieStream版"
この発言は #01383 HATENA さんのレコード型のデータをTListで読み書き に対するコメントです
nifty:FDELPHI/MES/16/1383 のサンプルのファイルの入出力をTFileStreamに変更
した物。
自分の環境で試すと、読み込みはこちらの方が若干遅いようです。
10万件で、7秒→8秒
procedure TForm1.DataLoadfromFile(FileName: String);
var
FS: TFileStream;
SData: PSdata;
SizeOfRec: integer;
begin
SizeOfRec := SizeOf(TSData);
FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
while FS.Position < FS.Size do begin
New(SData);
FS.ReadBuffer(SData^, SizeOfRec);
SDataList.Add(SData);
end;
FS.Free;
DrawGrid1.RowCount := SDataList.Count;
DrawGrid1.ReFresh;
end;
procedure TForm1.DataSaveToFile(FileName: String);
var
FS: TFileStream;
SData: PSdata;
i, SizeOfRec: integer;
begin
SizeOfRec := SizeOf(TSData);
FS := TFileStream.Create(FileName, fmCreate or fmShareExclusive);
for i := 0 to SDataList.Count-1 do
begin
SData := SDataList.Items[i];
FS.WriteBuffer(SData^, SizeOfRec);
end;
FS.Free;
end;
01/09/17(月) 17:04 HATENA(GFC03235)
Original document by HATENA 氏 ID:(GFC03235)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|