Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: Daten mit AssignFile ändern oder anfügen

  Alt 31. Okt 2005, 13:41
Ok, hier mal mit MemoryStream

Delphi-Quellcode:
var MemoryStream : TMemoryStream;
    buffer : Array of Byte;
begin
  // Memorystream anlegen
  MemoryStream := TMemoryStream.Create;
  // Datei laden
  MemoryStream.LoadFromFile(FILENAME);

  // Maximum aus schon existierender Dateigröße und Datei mit 23430 Byte +
  // Länge des angehangenen Textes
  setLength(buffer, max(23430 + length(self.Edit1.Text), MemoryStream.Size));

  // kopieren der schon vorhandenen bytes aus der Datei
  if MemoryStream.Size > 0 then
    begin
      copyMemory(@buffer[0], MemoryStream.Memory, MemoryStream.Size);
    end; // if size(MemoryStream) > 0

  // schreibt Edit1.Text an die Stelle 23430 (also beginnend bei)
  // überschreibt auch alles was schon vorhanden ist
  copyMemory(@buffer[23430], PChar(self.Edit1.Text), length(self.Edit1.Text));
 
  // löschen der alten Daten und rücksetzen der Position im Stream
  MemoryStream.Clear;
  // schreibt alle erzeugten Daten
  MemoryStream.Write(buffer[0], length(buffer));
  // abspeichern
  MemoryStream.SaveToFile(FILENAME);
  // aufräumen
  MemoryStream.Free;
Gut, für max brauchst du die Unit Math und FILENAME musst du natürlich anpassen. An sich kann man da sicher noch einiges sauberer und schöner machen, ab guck erstmal ob es das ist was du möchtest. Insbesondere solltest du buffer natürlich mit 0en oder etwas anderem Definiertem füllen, denn sonst kann es natürlich sein dass da etwas unerwartetes steht und bei irgendeiner Auswertung mal nicht egal ist. Wie gesagt, es würden jetzt auch alle Daten die schon drin standen beibehalten werden. Das heißt natürlich auch, dass wenn du schon einen längeren Edit1.Text z.B. '123' abgespeichert hast und den mit '45' überschreibst stünde in der Datei ab 23430 '453', die würde also nicht überschrieben werden!
Natürlich sollte die 23430 auch als CONST definiert werden, macht Änderungen schöner, wie gesagt guck erstmal

Gruß Der Unwissende
  Mit Zitat antworten Zitat