Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Streamlesefehler

  Alt 5. Mär 2010, 05:52
Ich schreibe einen Reecord an das Ende einer Datei. Das klappt. Nur beim Auslesen bekomme ich einen StreamleseFehler:
Delphi-Quellcode:
type
  TFileInfo = packed record
    FFilename: String[255];
    FFileSize: Integer;
  end;
  PFileInfo = ^TFileInfo;

procedure TAppendFile.AppendFileInfo(FileInfo: TFileInfo);
var
  fsCarrier: TFileStream;
begin
  fsCarrier := TFileStream.Create(FCarrierFile, fmOpenWrite);
  try
    fsCarrier.Seek(fsCarrier.Size, soFromBeginning);
    fsCarrier.WriteBuffer(FileInfo, SizeOf(TFileInfo));
  finally
    fsCarrier.Free;
  end;
end;

procedure TAppendFile.Extract;
var
  fsCarrier: TFileStream;
  FileInfo: PFileInfo;
begin
  fsCarrier := TFileStream.Create(FCarrierFile, fmOpenRead);
  try
    fsCarrier.Seek(SizeOf(TFileInfo), soFromEnd);
    new(FileInfo);
    fsCarrier.ReadBuffer(FileInfo, Sizeof(TFileInfo));
    ShowMessage(IntToStr(PFileInfo(FileInfo)^.FFileSize));
  finally
    fsCarrier.Free;
  end;
end;
Und es ist mir ein Rätsel wieso. Der Dateizeiger steht an der richtigen Stelle. Das habe ich mit Position geprüft. Und der Dateiname steht auch in der Datei am Ende. Das hab eich mit einem Hexeditor geprüft.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat