PDA

Zobacz pełną wersję : Problem z zapentleniem się programu



renf7
20-01-07, 12:54
Dlaczego program mi się kurcze zapętla. Nie widze żadnej pętli na procedurze menu jesnak właśnie ona mi się zapętla

HELP!! :placz: :-)

uses crt;

type ToOsoba=record imie,nazwisko:string[20];
wiek:1..100;
end;

tab=array[1..10] of ToOsoba;

var
f:file of ToOsoba;
g:text;
e:file of byte;
t:tab;
bufor:string;
i,l,n:byte;
j:integer;

Procedure menu(var l:byte);
begin
writeln('1. Zapisz do pliku dane');
writeln('2. Wy˜wietl dane z pliku');
writeln('3. Wy˜wietl rozmiar powstaˆego pliku w elementech');
writeln('4. Wy˜wietl rozmiar powstaˆego pliku w bajtach');
writeln('5. Koäczy prac© programu');
readln(l);
end;


begin
readln(l);

case l of

1:
begin
writeln('podaj ilo˜† rekord˘w');readln(n);
assign(f,'d:\programowanie\record.txt');
reset(f);
for i:=1 to n do
begin
writeln('osoba ',n);
writeln('podaj imi©');readln(t[i].imie);
writeln('podaj nazwisko');readln(t[i].nazwisko);
writeln('podaj wiek');readln(t[i].wiek);
write(f,t[i]);
end;
close(f);
clrscr;
end;

2:
begin
assign(g,'d:\programowanie\record.txt');
reset(g);
while not eof(g) do
begin
readln(g,bufor);writeln(bufor);
end;
close(g);
clrscr;
end;

3:
begin
reset(f);
while not eof(f) do
j:=filepos(f);
writeln(j);
close(f);
clrscr;
end;

4:
begin
assign(e,'d:\programowanie\record.txt');
reset(e);
j:=filesize(e);
writeln(j);
clrscr;
end;


5: exit;

end;

clrscr;
end.

RRybak
26-01-07, 11:28
Pomijając czytelność programu.. co rozumiesz przez "zapętla się"? To że menu jest drukowane w kółko cały czas czy że się wyświetla i zawiesza? Jeśli to pierwsze, to nie powinno, ale nie będę tego rozbijał tabulatorami, żeby sprawdzić gdzie się bloki begin..end zaczynają i kończą. Ale to wygląda dobrze.

Jeśli to drugie, czyli się zawiesza - to masz odczyt przy starcie programu i drugie raz na końcu menu przez ReadLn - ta funkcja czeka na wpisane czegoś ORAZ naciśnięcie (potwierdzenie) tego klawiszem Enter. Inaczej nie przejdzie dalej.

Poza tym funkcja 'menu' nie jest nigdzie w programie wykorzystana i prawdopodobnie jej w ogóle nie ma w pliku .exe... :hmmm: