program adrliste_pas(input,output);
uses crt;

type
    KarteTyp = record
          Name   : string[40];
          Strasse: string[40];
          PlzOrt : string[40];
          TelNum : string[12];
    end;

var Kartei  : file of KarteTyp; {Die Datei}
    Eingabe : Integer;   {Die Eingabe im Hauptmenu}


procedure Zeige(Karte: KarteTyp);
begin
     ClrScr;
     with Karte do begin {Nacheinander die Daten ausgeben}
          WriteLn('Name   :',Name);
          WriteLn('Strasse:',Strasse);
          WriteLn('PlzOrt :',PlzOrt);
          WriteLn('TelNum :',TelNum);
     end
end;

procedure Anhaengen;
Var Neue: KarteTyp;
begin
     With Neue do begin
          WriteLn('Bitte eingeben:');
          Write('Name   :') ; ReadLn(Name);
          Write('Strasse:') ; ReadLn(Strasse);
          Write('PlzOrt :') ; ReadLn(PlzOrt);
          Write('TelNum :') ; ReadLn(TelNum);
     end;
     seek(kartei,filesize(kartei)); {Ende suchen}
     write(Kartei,Neue);
end;

Procedure Suchen;
Var Aktuelle: KarteTyp;
    SuchName: string[40];   {Der Name, nach dem gesucht wird}
begin
     reset(Kartei);
     WriteLn('Bitte Namen eingeben:');
     ReadLn(suchName);
     While NOT eof(Kartei) do begin
           read(Kartei,Aktuelle);
           if Aktuelle.Name = SuchName THEN begin
              Zeige(Aktuelle); {Anzeigen}
              seek(Kartei,filesize(Kartei)){zum Ende Springen Abbrechen}
           end else begin
              if eof(Kartei) THEN begin
                 ClrScr;WriteLn;
                 WriteLn('Nicht gefunden!');
                 WriteLn;WriteLn
              end
           end
     end
end;


begin
     assign(kartei,'ADRFILE.TMP');
     ReWrite(Kartei); {Datei Initialisieren}
     ClrScr;
     Repeat
           WriteLn('1=Neue Adresse, 2=Suchen eines Satzes, 99=Ende');
           ReadLn(Eingabe);
           case Eingabe of
                1: Anhaengen;
                2: Suchen
           end;
     until eingabe=99;
end
.