Einzelnen Beitrag anzeigen

mabstudent

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

AW: Textdatei in Record Muster überführen

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