Thema: Delphi Daten an Datei anhängen

Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Daten an Datei anhängen

  Alt 25. Mai 2005, 22:08
Schreib die Daten ans Ende, dahinter die Länge und dann noch eine Kennung, das Daten angehängt wurden.
Delphi-Quellcode:
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;
Das ist Pseudocode, es kann also sein, das einige Methoden nicht existieren, aber der Sinn ist klar:
Wenn ich Daten hinten dran hänge, dann schreibe ich die Daten, dann die Länge, dann eine Kennung
Wenn ich Daten lesen will, dann gucke ich erst, ob hinten die Kennung dran ist. Wenn ja, lese ich die 4 bytes davor (die Länge) und dann die Daten.
Mit ein bisserl Gehirnschmalz kannst Du mehrere Blöcke hinten dran hängen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat