Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Unter Vernachlässigung des Dateientyps Dateien editieren

  Alt 6. Aug 2007, 18:20
Delphi hat glücklicherweise einen Stringtyp, der keine Probleme mit Hex-0 ($00) hat.
Deshalb kann man (sollte man) auch binäre Daten in einem Ansistring speichern.
Das hat folgende Vorteile:
* Ansistrings können dynamisch angelegt werden und werden von Delphi durch Compiler-Magik automatisch
entsorgt.
* ob man Textdateien lädt oder binäre Dateien ist egal; man verwendet die gleiche Technik
* ein String trägt seine Länge in sich - man braucht keine zusätzliche Längenvariable
Beispiel:
Delphi-Quellcode:
var
   s : Ansistring;
   a : char;
begin
   s := FileToString('C:\datei.xyz'); // Datei komplett laden
   // zwei Bytes tauschen
   a := s[16];
   s[16] := s[6];
   s[6] := a;
   // direkt 2 Bytes setzen
   s[1] := chr(200);
   s[2] := chr($A2); // man kann auch hexadezimale Konstanten angeben
   StringToFile('C:\datei.xyz', s); // veränderten String speichern
end;
FileToString() und StringTofile() gibt es hier: http://www.delphipraxis.net/internal...=665975#665975
Falls man nur Teile der Datei laden und verändern möchte, kann man diese Funktionen um die Parameter Position und Laenge erweitern.

Die Alternative mit Assignfile, read, write, ... ist eine veraltete Technik aus der Anfangszeit von Pascal.
Andreas
  Mit Zitat antworten Zitat