Thema: Delphi Virtual Filesystem

Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#2

Re: Virtual Filesystem

  Alt 6. Jul 2006, 18:59
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.
  Mit Zitat antworten Zitat