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??
Announcement
Collapse
No announcement yet.
Textdatei lesen u. Records schreiben
Collapse
X
-
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>
Comment