Einzelnen Beitrag anzeigen

mabstudent

Registriert seit: 13. Nov 2010
23 Beiträge
 
#14

AW: Textdatei in Record Muster überführen

  Alt 19. Jan 2013, 13:01
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.
  Mit Zitat antworten Zitat