Thema: Delphi Daten anhängen

Einzelnen Beitrag anzeigen

Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#8

Re: Daten anhängen

  Alt 4. Sep 2003, 16:36
Ich code Dir hier mal eben das Kopieren des Inhaltes einer Datei in
eine andere runter und danach sage ich noch was zum Anhängen.

Dieser Stil ist ein alter Pascal-Stil, den ich noch von damals aus dem
Abi kann. Es gibt viele, andere Mittel dieses Problem zu lösen,
Ich bin gerade auf der Arbeit und habe deshalb kein Delphi zur Hand.
Ich konstruiere das mal eben "per Stift"! Ich werde Dir alles
ausreichend dokumentieren, damit Du es nachvollziehen kannst.


Delphi-Quellcode:
// Erst mal Pfad von Quelle und Zieldatei definieren:

Const Quelle = 'C:\Quelle.dat';
Const Ziel = 'C:\windows\Desktop\Ziel.dat';

// Datenstruktur Deiner Datei

Type TRecord = Record
               ... // was auch immer, pack's einfach rein.
               end;

Var QuellDat, ZielDat : File of TRecord; // Dateizuweisung des Datentyps!

Var Hilf : TRecord; // Muss äquivalent mit "File of" sein !!!

Begin
  AssignFile(QuellDat, Quelle); // QuellDat-Variable des ext. Namen zuweisen
  Reset(QuellDat); // vorhandene Datei öffnen
  If IOResult = 0 then // Wenn kein Fehler ...
  begin
    AssignFile(ZielDat, Ziel); // ZielDat-Variable des ext. Namen zuweisen
    Reset(ZielDat); // vorhandene Datei öffnen
    If IOResult <> 0 then // Wenn Datei nicht vorhanden ...
      Rewrite(ZielDat); // ... Erstelle neue Datei
    While not Eof(QuellDat) Do // Solange Datei nicht am Ende
    Begin
      Read(QuellDat, Hilf); // Lese Record von QuellDat
      Write(ZielDat, Hilf); // Schreibe Record in ZielDat
    end
  end
  else { Fehler }; // Fehlerbehandlung
  CloseFile(QuellDat); // Schließe QuellDat
  CloseFile(ZielDat); // Mach zu, das Ding
end;
So, zum Anhängen von Informationen an eine Datei machst Du Folgendes:

Delphi-Quellcode:
Type TDatei = File of String; // muss nicht String sein, bloß ein Beispiel

Function PrepareForAppend(Var Datei : TDatei; FileName : String) : Boolean;
Begin
  AssignFile(Datei, FileName); // Wieder mal einer Dateiveriable den ext. Namen zuweisen
  Reset(Datei) // Vorhandene Datei öffnen.
  If IOResult <> 0 then
    Rewrite(Datei) // Bei nicht vorhanden sein, neu erstellen
  {Und jetzt kommt der Knackpunkt!}
  Seek(Datei, FileSize(Datei)); // Wir setzen den Cursor auf das Dateiende und damit können wir weitere Infos anhängen (konkatinieren)
  Result:= (IOResult = 0) AND FileExists(FileName); // True, wenn kein Fehler + Datei vorhanden !
end;
Also Leute, macht's gut. Ich fahre nun heim.
DANNYBOY
  Mit Zitat antworten Zitat