Announcement

Collapse
No announcement yet.

Textdatei lesen u. Records schreiben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Textdatei lesen u. Records schreiben

    Hallo, Kann ich einerseits Zeile für Zeile aus einer Textdatei lesen, die Zeile aufsplitten (d.h. z.B. zeichen 1-10 = var1, zeichen 11-20 = var2,..) und dann var1,var2,.. als Record abspeichern? Kann ich da beide Dateien gleichzeitig offen haben? oder gibt es eine bessere Lösung??

  • #2
    Hallo,

    das folgende Beispiel stammt aus meinem Buch <b>Delphi Win32-Lösungen</b>. Dort wird der Inhalt einer Datei direkt als FILE OF RECORD interpretiert und direkt in eine Record-Struktur eingelesen. Da die benötigte Bytezahl für jedes Recordfeld feststeht, werden die Informationen automatisch den entsprechenden Recordfeldern zugeordnet. <br>
    Nachdem die Daten in diesen Record-Datensätzen geändert wurden, kann das Ganze wieder in die Datei zurückgeschrieben werden:

    <pre>
    unit RecFile;

    interface

    type
    GZRec = record
    lDateCode : TDateTime; { Auswertund des Monats / Jahrs }
    sDay : String[6]; { Zeilenbeschriftung für EditGrid }
    sVormonat : String[6]; { Vormonatkontostand }
    sK1 : String[6]; { Kommen 1 }
    sG1 : String[6]; { Gehen 1 }
    sK2 : String[6]; { Kommen 2 }
    sG2 : String[6]; { Gehen 2 }
    sSoll : String[6] { Soll }
    end;

    const
    { max. Arraygröße = 6 Seiten mal 7 Spalten }
    imaxDay = 42;

    var
    { globale Variable enthält Dateinamen der GZ-Datei }
    sGZFile : String[80];
    { Array zur Datenspeicherung }
    GZDays : array[1..imaxDay] of GZRec;

    procedure LoadGZValues; { Daten aus der Datei laden }
    procedure SaveGZValues; { Daten in die Datei schreiben }

    implementation

    procedure LoadGZValues;
    var
    F : File of GZRec;
    iRec : Integer;
    begin
    Assign(F, sGZFile);
    try
    Reset(F);
    for iRec:= 1 to imaxDay do Read(F, GZDays[iRec]);
    finally
    CloseFile(F)
    end
    end;

    procedure SaveGZValues;
    var
    F : File of GZRec;
    iRec : Integer;
    begin
    Assign(F, sGZFile);
    try
    Rewrite(F);
    for iRec:= 1 to imaxDay do Write(F, GZDays[iRec]);
    finally
    CloseFile(F)
    end
    end;

    end.
    </pre&gt

    Comment

    Working...
    X