Wyświetlanie partiami teskstu po naciśnięciu klawisza.

0

Witam, mam problem w pascalu. Mam funkcję wyświetlającą drzewo rekordów, lecz przy wyświetlaniu ucina wczesniejsze rekordy - po prostu tekst nie mieści się w okienku cmd. I teraz chciałbym, żeby po naciśnięciu spacji wyświetlał mi żądaną ilośća jeżeli wcisne ESC to kończy wyświetlanie. Po prostu kontrolowane wyświetlanie drzewa ,
Kombinowałem troche z pętlami, lecz przy rekurencji wszystkie liczniki się zerują i nic nie wychodzi.
Jakaś podpowiedź?

To moja procedura wyświetlająca(wyświetla na raz całą liste - jeżeli są 4 rekordy to wyświetla tylko ostatnie 3, a pierwszy ucina. dlatego chciałbym wyświetlać po 2 kolejne rekordy jednym naciśnięciem)

procedure wyswietlsam(root_sam:PS);      {wyswietla drzewo samochodow inorder}
begin

  if root_sam<>NIL then
   begin
   wyswietlsam(root_sam^.l);
    writeln ('Marka      : ',root_sam^.dane.marka);
    writeln ('Model      : ',root_sam^.dane.model);
    writeln ('Silnik     : ',root_sam^.dane.silnik);
    writeln ('Wyposazenie: ',root_sam^.dane.wyposazenie);
    writeln ('Cena       : ',root_sam^.dane.cena:4:2,' zl');
    writeln ('ID_Sam.    : ',root_sam^.dane.id);
    writeln ('ID_Klienta : ',root_sam^.dane.id_klienta);
    writeln;
   wyswietlsam(root_sam^.r);
   end;
end; 

jak widać na screenie ucina wszystko oprocz ostatniej linijke pierwszego recordu

user image

0

To moja procedura wyświetlająca(wyświetla na raz całą liste - jeżeli są 4 rekordy to wyświetla tylko ostatnie 3, a pierwszy ucina.

Nie ucina, tylko po prostu nie zapamiętuje; Ostatnio wspominałem w jakimś wątku dotyczącym konsoli w Lazarusie, że po dodaniu modułu Crt do listy konsola przestaje umożliwiać przewijanie (czyli nie zapamiętuje tego co było na ekranie wcześniej); Usunięcie z listy tego modułu włącza z powrotem możliwość przewijania, stąd można trzymać w konsoli więcej danych (ale nie bądź ile);

Co do zatrzymywania wyświetlania - tutaj sprawa nie jest taka oczywista, bo rekurencja nieco przeszkadza; A do tego jeszcze chcesz rozpoznawać stan wciśniętego klawisza i odpowiednio reagować; Najpierw wykukaj odpowiednie do zatrzymania wyświetlania miejsce.

1 użytkowników online, w tym zalogowanych: 0, gości: 1