Function GetAppendixInfo (aFile : TString;
Var aSize : Integer) : Boolean;
// Liefert True und die Länge des Anhängsels, oder False, wenn keins da ist.
Begin
aFile.Seek (4, soFromEnd);
aFile.ReadInteger (aValue);
if aValue <> ccMyPostamble
Then
Result := False
else begin
Result := True;
aFile.Seek (8, soFromEnd);
aFile.ReadInteger (aSize);
End
End;
Procedure AppendData (aFile, aData : TStream);
Begin
If GetAppendixInfo (aFile, aSizeOfOldData)
Then
aFile.Seek (aSizeOfOldData, soFromEnd)
Else
aFile.Seek (0, soFromEnd);
aFile.Copy (aData, aData.Size);
aFile.WriteInteger (aData.Size + 8);
// Daten + 2*Integer
aFile.WriteInteger (ccMyPostamble);
aFile.Truncate;
End;
Procedure ReadAppendix (aFile, aData : TStream);
Begin
If not GetAppendixInfo (aFile, aSizeOfData)
Then
Raise Exception.Create ('
Da is nix');
aFile.Seek (aSizeOfData, soFromEnd);
// aSizeOfData ist um 8 bytes grösser (wg Länge und postamble)
aData.Copy (aFile, aSizeOfData - 8);
End;