Danke, verstanden.
Aber das Programm läuft immernoch nicht. Sieht jemand einen Fehler?
Ich möchte aus der erstellten record datei einen bestimmten record auslesen - mehr eigentlich nicht
Muss ich an die Datei vom Typ Tperson 'recadressen.??' eine Endung hängen?? Wenn ja, was??
Ich bekomme keinen Fehler, aber auch keinen Inhalt im Memo. ABER die Warnung, dass person nicht initialisiert wurde in Zeile (siehe Code).
Aktueller Code:
Code:
[...]
type
Tperson=record
nachname:string[20];
vorname:string[10];
plz:string[5];
ort:string[20];
strasse:string[20];
hausnummer:string[5];
vorwahl:string[5];
telefon:string[10];
end;
[...]
const
recordsize = sizeof(Tperson);
var
Form1: TForm1;
[...]
function linetorec(var s:string):Tperson; //hier sollen später wenn person.nachname funktioniert die weiteren
const //Eigenschaften von Tperson zugewiesen werden, d.h.
semi = ';'; //ich will den string bis zum ersten semikolon löschen und wieder
var //über pos nach dem neuen ersten semikolon suchen, dann wieder
semiPos: integer; //löschen usw.
person: Tperson;
begin
semiPos:=0;
semiPos:=Pos(semi, s);
person.nachname:= copy(s, 0, semiPos -1);
result:=person;
end;
procedure TForm1.Button1Click(Sender: TObject); //Konvertieren: inhalt textfile an record datei übergeben
var srcfile: textfile;
destfile: file of Tperson;
line: string;
person: Tperson;
begin
assignfile(srcfile,'adressen.txt'); //Quelle öffnen
reset(srcfile);
assignfile(destfile,'recadressen.dat'); //Ziel öffnen
rewrite(destfile);
memo1.clear;
while not eof(srcfile) do
begin
repeat readln(srcfile, line) //Zeile lesen
until line <> ''; //bis irgendwas in line drin ist
linetorec(line); //aus der Zeile, person(Tperson) machen
write(destfile, person); //die Zieldatei (record) beschreiben.*Warning: Local var person does
//not seem to be initialized.
end;
closefile(destfile);
closefile(srcfile);
end;
procedure TForm1.Button2Click(Sender: TObject); //destfile lesen + ins memo
var
rec_pos: integer;
anz_recs: integer;
person: Tperson;
destfile: file of Tperson;
begin
rec_pos:=strtoint(edit1.text); //gewünschte Person aus Edit1 lesen
anz_recs:=filesize('recadressen') div recordsize; //grenzt die Eingabemögl. für Edit1 ein von 0..anz_recs
label1.caption:=inttostr(anz_recs);
assignfile(destfile, 'recadressen'); //record Datei öffnen
reset(destfile);
seek(destfile, rec_pos); //an die gewünschte Stelle fahren und
read(destfile, person); //Person x auslesen
memo1.clear;
memo1.lines.add(person.nachname+...); //hier folgen später die weiteren Eigenschaften
closefile(destfile);
end;
end.