Lesen und Schreiben einer Datei und aus einer Zeichenfolge


Dieser Artikel Inroduces zwei praktische Funktionen zum Lesen von Contens einer Datei in eine Zeichenfolge und eine Zeichenfolge in eine Datei geschrieben.
Lesen einer Datei in einen string
Vielleicht der einfachste Weg zum Lesen einer Datei in eine Zeichenfolge unter Verwendung der LoadFromFile -Methode des ein TStringList Objekt und dann den Zugriff auf seine Text Eigenschaft:
uses SysUtils, Classes;
  function LoadFile(const FileName: TFileName): string;
  begin
    with TStringList.Create do
      try
        LoadFromFile(FileName);
        Result := Text;
      finally
        Free;
      end;
  end;

Diese Vorgehensweise ist jedoch ineffizient, da LoadFromFile wird die Datei geladen und analysiert, um die Zeilen zu trennen und dann, wenn wir verwenden die Text Eigenschaft, eine interne Methode wird aufgerufen, um zu produzieren eine Zeichenfolge, die Verbindungslinien, also diesem doppelte Arbeit für nichts getan wird und wir am Ende mit mehr als das Doppelte der Speicher, die wir tatsächlich benötigen (bis wir gratis die TStringList Objekt).
Einen besseren Weg
Ein besserer Ansatz könnte sein benutze ein TFileStream Objekt (oder die alten Assign , Reset , Read und Close Verfahren) direkt den Inhalt einer Datei in einen String gelesen. Hier ist die gleiche Funktion mit TFileStream , die gibt den Inhalt der Datei, deren Name als Parameter übergeben wird:
uses SysUtils, Classes;

  function LoadFile(const FileName: TFileName): string;
  begin
    with TFileStream.Create(FileName,
      fmOpenRead or fmShareDenyWrite) do begin
      try
        SetLength(Result, Size);
        Read(Pointer(Result)^, Stream.Size);
      except
        Result := ''; // Deallocates memory
        Free;
        raise;
      end;
      Free;
    end;
  end;

Schreiben eine Datei aus einer Zeichenfolge
Wenn wir brauchten, um den Inhalt der Zeichenfolge zurück auf der Festplatte speichern, können wir das folgende Verfahren verwenden:
uses SysUtils, Classes;
  procedure SaveFile(const FileName: TFileName;
                     const content: string);
  begin
    with TFileStream.Create(FileName, fmCreate) do
      try
        Write(Pointer(content)^, Length(content));
      finally
        Free;
      end;
  end;









Lesen und Schreiben einer Datei und aus einer Zeichenfolge


Lesen und Schreiben einer Datei und aus einer Zeichenfolge : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Dieser Artikel Inroduces zwei praktische Funktionen zum Lesen von Contens einer Datei in eine Zeichenfolge und eine Zeichenfolge in eine Datei geschrieben.
Lesen einer Datei in einen string
Vielleicht der einfachste Weg zum Lesen einer Datei in eine Zeichenfolge unter Verwendung der LoadFromFile -Methode des ein TStringList Objekt und dann den Zugriff auf seine Text Eigenschaft:
uses SysUtils, Classes;
  function LoadFile(const FileName: TFileName): string;
  begin
    with TStringList.Create do
      try
        LoadFromFile(FileName);
        Result := Text;
      finally
        Free;
      end;
  end;

Diese Vorgehensweise ist jedoch ineffizient, da LoadFromFile wird die Datei geladen und analysiert, um die Zeilen zu trennen und dann, wenn wir verwenden die Text Eigenschaft, eine interne Methode wird aufgerufen, um zu produzieren eine Zeichenfolge, die Verbindungslinien, also diesem doppelte Arbeit für nichts getan wird und wir am Ende mit mehr als das Doppelte der Speicher, die wir tatsächlich benötigen (bis wir gratis die TStringList Objekt).
Einen besseren Weg
Ein besserer Ansatz könnte sein benutze ein TFileStream Objekt (oder die alten Assign , Reset , Read und Close Verfahren) direkt den Inhalt einer Datei in einen String gelesen. Hier ist die gleiche Funktion mit TFileStream , die gibt den Inhalt der Datei, deren Name als Parameter übergeben wird:
uses SysUtils, Classes;

  function LoadFile(const FileName: TFileName): string;
  begin
    with TFileStream.Create(FileName,
      fmOpenRead or fmShareDenyWrite) do begin
      try
        SetLength(Result, Size);
        Read(Pointer(Result)^, Stream.Size);
      except
        Result := ''; // Deallocates memory
        Free;
        raise;
      end;
      Free;
    end;
  end;

Schreiben eine Datei aus einer Zeichenfolge
Wenn wir brauchten, um den Inhalt der Zeichenfolge zurück auf der Festplatte speichern, können wir das folgende Verfahren verwenden:
uses SysUtils, Classes;
  procedure SaveFile(const FileName: TFileName;
                     const content: string);
  begin
    with TFileStream.Create(FileName, fmCreate) do
      try
        Write(Pointer(content)^, Length(content));
      finally
        Free;
      end;
  end;


Lesen und Schreiben einer Datei und aus einer Zeichenfolge

Lesen und Schreiben einer Datei und aus einer Zeichenfolge : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Lesen und Schreiben einer Datei und aus einer Zeichenfolge
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung