Kleiner Tip:
Stream alleine ist leider sehr, sehr, sehr lahmarschig.
Um Welten schneller ist das gepufferte Lesen über TReader und TWriter. ( früher nahm man dazu auch Blockread, Blockwrite
Hier mal beispielcode zum laden eines (beliebigen) Records in eine Liste.
Delphi-Quellcode:
//==============================================================================
const
BufferSize = 4096;
//==============================================================================
procedure TProviderInfo.LoadFromFile;
var
pSpaceInfo : PSpaceInfoRec;
stream : TFileStream;
reader : TReader;
i : Integer;
size : integer;
begin
if not FileExists(FFilename) then exit;
size := sizeof(SpaceInfoRec);
stream := TFileStream.Create(FFileName,fmOpenRead or fmShareDenyWrite);
try
reader := TReader.Create(stream,BufferSize);
try
for i:=0 to (stream.Size Div Size) -1 do
begin
new(pSpaceInfo);
reader.Read(pSpaceInfo^, Size);
Flist.Add(pSpaceInfo);
end; // for i := 0
finally
reader.Free;
end;
finally
stream.Free;
end;
end; // loadFromFile
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.