Free Pascal- jak sprawdzić identyczność 2 wyrazów

Więc tak mam taką procedure:

Procedure SzukajWgNazwiska;

Var

nazwisko: string;

i: byte;

Begin

assign(f, ‘minibaza.dat’);

reset(f);

Repeat

write('Podaj nazwisko: ');

readln(nazwisko);

if length(nazwisko)<2 then writeln(‘PODANO ZLE DANE!’);

Until length(nazwisko)>=2;

while not eof(f) do

Begin

for i:=1 to ilosob do

Begin

read(f, osoba_);_

with osoba do

if nazwisko=osoba_.nazwisko then {<<<<<<<<<<<<<<-------TU JEST TA LINIJKA}_

Begin

writeln('OSOBA ',i);

writeln;

write('Imie: '); writeln(osoba_.imie);_

write('Nazwisko: '); writeln(osoba_.nazwisko);_

write('Data urodzenia: '); write(osoba_.dzienur); write(’.’); write(osoba__.miesiacur); write(’.’); writeln(osoba__.rokur);_

End

else

writeln(‘NIE MA OSOB SPELNIAJACYCH PODANE KRYTERIA!’);

End;

End;

close(f);

End;

Za każdym razem kiedy uruchomie te procedure to nic sie nie dzieje i wypisuje mi wszystkie osoby, tak jakby warunku w ogole nie bylo. Chodzi mi o to aby sprawdzono wpierw czy oba wyrazy są identyczne. Robie to po prostu znakiem rowna sie lecz to nic nei daje. Jak to mam zrobic?

Problem jest instrukcja with w linii przed tą przez Ciebie zaznaczoną (with osoba do).

Otóż nazwisko jest w tym wypadku utożsamiane z polem osoba_.nazwisko. Wywal tę linijkę i będzie dobrze._

P.S. Masz też inny błąd - pętla while not eof(f) jest tylko raz wykonywana, bo w niej czytasz (w innej pętli) wszystkie rekordy z bazy/pliku.

Dobra wszystko picuś glancuś tylk ow programie głównym są jakieś 2 błędy. Oto kod:

Begin

Repeat

Menu;

Repeat

Wybor; {tutaj jest bład pisze: illegal expression}

Until decyzja in [1, 2, 3, 4, 5, 6, 7];

if decyzja<>7 then

Begin

case decyzja of

1: Wprowadzanie;

2: Wyprowadzanie;

3: Begin

Repeat

PrzeszukajMenu;

Repeat

Przeszukuj;

Until opcja in [1, 2, 3, 4, 5, 6, 7];

if opcja<>7 then

Begin

case opcja of

1: SzukajWgImienia;

2: SzukajWgNazwiska;

3: SzukajWgDniaUr;

4: SzukajWgMiesiacaUr;

5: SzukajWgRokuUr;

6: Clrscr;

7: Exit

End;

End;

Until opcja=7;

End;

4: Begin

Repeat

EdytujMenu;

Repeat

EdycjaWybor;

Until decyzjaedytuj in [1, 2, 3, 4, 5];

if decyzjaedytuj<>5 then

Begin

case decyzjaedytuj of

1: DodajNowyRekord;

2: EdytujBiezacyRekord;

3: Clrscr;

4: Exit;

End;

End;

Until decyzjaedytuj=5

End;

5: Eksportuj;

6: Clrscr;

7: Exit;

End;

End;

Until decyzja=7;

End. {tutaj jest 2: ‘;’ expected but ‘.’ found} wiem, że coś z beginem i endem tylko za cholere nie moge znalezsc bledu

Sformatuj kod tak aby było widoczne który begin jest parą do którego end.

Któryś z begin nie ma odpowiedniej pary.

No właśnie ja tak robię, ale jak się wklei na forum to tekst się wyrównuje. Ale mógłby ktoś sprawdzić, bo wrzuciłem ten sam kod na wklej.org: http://wklej.org/id/460019/ .