[pascal] poprawa programu przeglądarka

dr_giggly^^
Użytkownik
Użytkownik
Posty: 15
Rejestracja: 19 lut 2008, o 13:37
Płeć: Mężczyzna
Lokalizacja: Biała Podlaska
Podziękował: 7 razy

[pascal] poprawa programu przeglądarka

Post autor: dr_giggly^^ »

Muszę napisać program przeglądarka plików tekstowych, program ma umożliwiać poruszanie się strzałkami(program nie może sie ograniczać do 80 kolumn i 25 wierszy).
Proszę o poprawę tego co stworzyłem, u mnie poruszanie strzałką działa z opóźnieniem jednego ruchu, nie wczytuje całości plik tylko pierwszy wiersz.

Kod: Zaznacz cały

program przegladarka;
uses crt;

var
  plik:text;
  wiersz:string;
  NazwaPliku:string;
  znak:char;
  x,y:byte;

procedure przesun(dx,dy:integer);
begin
gotoxy(x,y);
x:=x+dx;
y:=y+dy;
end;

begin
clrscr;
writeln('Podaj plik do przejrzenia');
readln(NazwaPliku);
clrscr;
assign(plik,NazwaPliku);
reset(plik);
while not Eof (plik) do

begin
readln(plik,Wiersz);
writeln(Wiersz);

x:=1;
y:=1;

przesun(0,0);

  repeat
    znak:=readkey;
case upcase(znak) of
#72:przesun(0,-1);
#80:przesun(0,1);
#75:przesun(-1,0);
#77:przesun(1,0);
end;
until upcase(znak)=#27;
end;
close(plik);
readln;
end.
Hagaren
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 5 kwie 2008, o 19:29
Płeć: Mężczyzna
Lokalizacja: Białystok

[pascal] poprawa programu przeglądarka

Post autor: Hagaren »

Jeżeli chodzi o opóźnienie to masz w złej kolejności polecenia w procedurze przesun. Powinno być:

Kod: Zaznacz cały

procedure przesun(dx,dy:integer);
begin
x:=x+dx;
y:=y+dy;
gotoxy(x,y);
end;
a brak reszty pliku spowodowany jest błędem w pętli, powinno być:

Kod: Zaznacz cały

x:=1;
y:=1;

przesun(0,0);

  repeat
reset(plik);
while not Eof (plik) do

begin
readln(plik,Wiersz);
writeln(Wiersz);
end;
    znak:=readkey;
case upcase(znak) of
#72:przesun(0,-1);
#80:przesun(0,1);
#75:przesun(-1,0);
#77:przesun(1,0);
end;

until upcase(znak)=#27;
Nie gwarantuje sukcesu ponieważ pascala widziałem ostatnio jakieś 2 lata temu.
ODPOWIEDZ