Eure Hilfe ist nochmal gefragt, da ich immernoch hier dran sitze
Aufgabenstellung hat sich insofern geändert, dass ich nun eine .txt Datei habe in der 11 Adressen in dieser Form stehen:
Nachname;Vorname;PLZ;Ort;Strasse;Hausnummer;usw...
Die Aufgabe an sich besteht immernoch darin die .txt datei in ein Record Muster zu überführen...
Hier mein Quelltext+Fragen:
Code:
const
recordsize=1+20+20+5+20+30+3+4+9+1; //[B]*1[/B]
type
Tperson=record
Nachname:string[20];
Vorname:string[20];
PLZ:string[5];
Ort:string[20];
Strasse:string[30];
Hausnummer:string[3];
Vorwahl:string[4];
Telefon:string[9];
end;
*1: recordsize=.. war eine Vorgabe, was hat 2mal +1 zu bedeuten?
Code:
procedure person_linetorec(const Line: string; var person: Tperson);
const
semi=';';
var
semiPos: array [0..8] of integer;
i:integer;
begin
FillChar(person, SizeOf(person), #0);
FOR i:=0 TO 8 DO
begin
semiPos[i]:=Pos(semi, Line);
person.nachname := Copy(Line, 0, semiPos[0]-1);
person.vorname := Copy(Line, semiPos[0]+1,semiPos[1]-1);
person.PLZ:= Copy(Line, semiPos[1]+1, semiPos[2]-1);
//usw. - wollte erstmal testen bevor ich hier weiter tippe...
end;
end;
Beim Testen mit Ausgabe über seek() einer beliebigen Person aus der Adressdatei auf ein Memo fällt auf:
- mal ist es richtig, mal falsch, je nach Länge von Nach,- und Vornamen der jeweiligen Person - erkenne aber leider keine Fehlersystematik. Hab ich bei der Copy(in,von,bis)-Sache was falsch gemacht?
Code:
procedure Konvertieren(const SrcFilename, DestFilename: string);
var
srcfile: textfile;
destfile:file of Tperson;
line:string;
person:Tperson;
begin
assignfile(srcfile,'adressen.txt');
reset(srcfile);
assignfile(destfile,'adressen.db');
rewrite(destfile);
while not eof(srcfile) do
begin
readln(srcfile,line);
person_linetorec(line,person);
write(destfile,person);
end;
closefile(destfile);
closefile(srcfile);
end;
Nur zum Verständnis, die prozedur macht was sie machen soll.