[Turbo Pascal] Ignorowanie klawiszy strzałek,ins,home itd.

2010-12-03 23:20
0

Cześć
Jestem nowy na tym forum, zwracam się do Was z wielką prośbą. Mianowicie, robię prosty program w Turbo Pascalu symulujący pianino, mam do klawiszy z zakresu A..Z przypisane odpowiednie częstotliwości dzięki funkcji ZnakNaDzwiek (dzięki czemu mogłem usunąć tablicę dźwięk, która zawiera to samo co tablica znaki), następnie mam procedurę nagrywanie w której wywołuje procedurę NagrajDzwięk. Problem jest taki, że podczas podawania znaku (readkey) wczytuje mi też znaki spoza zakresu, zastosowałem odpowiedniego if'a jednak nalicza mi klawisze mające te same kody co niektóre litery (np. strzałki, ins, home). Moje główne pytanie do Was brzmi "Jak zrobić aby nie naliczało mi tych klawiszy?". Pod spodem zamieszczam fragment kodu :


{.. Fragment kodu .. }
melodia.ilosc := 1;
    repeat
      ch := readkey;
      ch := Upcase(ch);
      if ch = KlawiszESC then
      begin
      dec(melodia.ilosc);
        break;
      end;
      if ((ch >= KlawiszA) and (ch <= KlawiszZ)) or (ch = KlawiszSpacja) then
      begin
        NagrajDzwiek(ch);
      end;

    until (ch = KlawiszESC) or (melodia.ilosc = max);
{.. Fragment kodu .. }

liczę na pomoc, pozdrawiam Langol

Pozostało 580 znaków

2010-12-04 01:32
0

Klawisze: Ins, Home, strzałki, czy klawisze funkcyjne są kodowane za pomocą dwóch znaków, z których pierwszy ma kod 0, a drugi może się pokrywać np z kodem jakiejś litery.

Jeżeli chcesz, aby program nie reagował na klawisze rozszerzonej klawiatury (kodowane za pomocą dwóch znaków), to zrób np. tak:

ch:= Readkey;
if ch = #0
  then ch:= Readkey  {Zerowanie bufora klawiatury. Konieczne!}
  else begin
     {Tu Twoje operacje}
  end;
Przecież ten kod będzie reagował, i to w zupełnie nieprzewidywalny sposób: strzałki zinterpretuje jako jakieś litery. - Azarien 2010-12-04 10:39

Pozostało 580 znaków

2010-12-04 12:31
0

Dziękuje za pomoc! Wszystko śmiga aż miło :)

Chciałem zamknąć ale mam jeszcze pytanie

Czy istnieje możliwość skasowania pliku tekstowego spod Turbo Pascala? Jeśli tak to jaką procedurą?
Czy istnieje możliwość sprawdzenia czy plik już istnieje (najlepiej gdyby nie bylo IoResult <>0 bo błędów może być wiele, nie tylko istniejący już plik).

edytowany 2x, ostatnio: Langol, 2010-12-04 14:05

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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