Witam, napisałem słownik angielsko-polski, który się odpala , lecz są w nim poniższe błędy ( nie wiem jak je naprawic ) i prosiłbym o pomoc:
- Niby wszystko działa dobrze, program tłumaczy słowo, które jest zawarte w pliku, ale po wciśnięciu klawisza ENTER wyskakuje komunikat, że słowa nie ma w słowniku i żeby powrócić do MENU muszę parę razy kliknąć enter.
- Po dodaniu słowa do słownika, program go już nie odczytuje z pliku i nie mogę go przetłumaczyć. Wyskakuje komunikat, że słowa nie ma w słowniku.
Nie mam pojęcia co jest nie tak. Proszę o przeanalizowanie poniższego kodu (chodzi tu głównie o procedury zawarte w case, bo prawdopodobnie tu jest błąd):
program angpol;
uses crt;
var F,F1 :Text;
wybor :integer;
slowo,o,o1,x,x1 : string;
procedure Cursoroff;assembler;
asm
mov ah,01h
mov ch,10h
mov cl,00h
int 10h
end;
procedure Cursoron;assembler;
asm
mov ah,01h
mov ch,06h
mov cl,07h
int 10h
end;
procedure piszmenu(ktory: byte);
begin
textbackground(black);
textcolor(white);
gotoxy(1,1); write('ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ MENU ÄÄÄÄÄÄÄÄÄÄÄÄż');
gotoxy(1,2); write('ł ł'); {1}
gotoxy(1,3); write('ł ł'); {2}
gotoxy(1,4); write('ł ł'); {3}
gotoxy(1,5); write('ł ł'); {4}
gotoxy(1,6); write('ł ł'); {5}
gotoxy(1,7); write('ŔÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŮ');
gotoxy(2,2);
if ktory=1 then begin
textbackground(white);
textcolor(black);
write('Slownik Polsko-Angielski ');
textbackground(black);
textcolor(white);
end
else begin
write('Slownik Polsko-Angielski ');
end;
gotoxy(2,3);
if ktory=2 then begin
textbackground(white);
textcolor(black);
write('Slownik Angielsko-Polski ');
textbackground(black);
textcolor(white);
end
else begin
write('Slownik Angielsko-Polski ');
end;
gotoxy(2,4);
if ktory=3 then begin
textbackground(white);
textcolor(black);
write('Dodaj tlumaczenie ');
textbackground(black);
textcolor(white);
end
else begin
write('Dodaj tlumaczenie ');
end;
gotoxy(2,5);
if ktory=4 then begin
textbackground(white);
textcolor(black);
write('Koniec ');
textbackground(black);
textcolor(white);
end
else begin
write('Koniec ');
end;
end;
Function menu: byte;
var i : integer;
z : char;
begin
i:=1;
repeat
piszmenu(i);
z:=readkey;
if ord(z)=0 then begin
z:=readkey;
case ord(z) of
72: if i-1<1 then i:=4
else i:=i-1; {swg}
80: if i+1>4 then i:=1
else i:=i+1; {swd}
71: i:=1; {home}
79: i:=4; {end}
end;
end;
until ord(z)=13;
menu:=i;
end;
procedure slopolang;
var slowo,o,o1: string;
begin
while not eof(f) do
begin
gotoxy(1,13);
write('Wpisz slowo: ');
readln(slowo);
readln(f,o);
readln(f1,o1);
if slowo = o then writeln(o,' - ',o1)
else writeln('Brak slowa! Dodaj je najpierw do slownika!');
end;
end;
procedure sloangpol;
var slowo,o,o1: string;
begin
while not eof(f) do
begin
gotoxy(1,13);
write('Wpisz slowo: ');
readln(slowo);
readln(f,o);
readln(f1,o1);
if slowo = o1 then writeln(o1,' - ',o)
else writeln('Brak slowa! Dodaj je najpierw do slownika!');
end;
end;
procedure addslo;
var x,x1: string;
begin
gotoxy(1,13);
Write('Podaj polski odpowiednik: ');
readln(x);
write('Podaj angielski odpowiednik: ');
readln(x1);
append(F);
append(F1);
writeln;
writeln(F,x);
writeln;
writeln(F1,x1);
reset(f);
end;
begin
assign(F, 'POL.txt');
assign(F1,'ANG.txt');
reset (F);
reset(F1);
repeat
window(1,1,79,24);
clrscr;
cursoroff;
wybor:=menu;
cursoron;
gotoxy(1,23);
case wybor of
1:begin
slopolang;
end;
2:begin
sloangpol;
end;
3:begin
addslo;
end;
end;
until wybor=4;
close(f);
close(f1);
end.