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.