Wywołanie procedury za pomoca jakiegoś klawisza

0

Witam.
Jak w Free Pascalu mogę wywołać procedure w procedurze za pomoca jakiegoś klawisza..?
Czyli procedure DoWywolania chce wywolac w procedurze główna za pomocą jakiegoś klawisza np: 1..?

przykład:

procedure Dowywolania();
begin
end;

Procedure glowna();
begin
end;

Wie ktoś jak można to zrobić..?

Z góry dzięki za pomoc.
Pozdro: ProProgramer :)

0

Podstawy: readkey; pętle: repeat-until.

0

Z tym sobie już poradziłem.. Ale teraz mam kolejny problem.. Jak mogę wyjść z pętli nie wytłaczając programu..?

1

Ciekawe kiedy ProProgramer dostanie bana xD

0
ProProgrammer napisał(a)

Jak w Free Pascalu mogę wywołać procedure w procedurze za pomoca jakiegoś klawisza..?

Środowisko tutaj nie ma nic do rzeczy; Liczą się jedynie nazwy wbudowanych procedur / funkcji, które w zależności od środowiska mogą się różnić;

Wracając do tematu to jednym ze sposobów jest ustawienie pętli na wczytywanie znaków z klawiatury (np. UpCase(ReadKey)) i sprawdzanie w bloku wyboru co to za znak;

Np.:

repeat
  cKey := UpCase(ReadKey);

  case cKey of
    'G': Graj();
    'P': Pomoc();
    #27: Wyjscie();
  end;
until cKey = #27; {#27 - Escape}

W momencie wciśnięcia klawisza Escape zostaje wywołana procedura Wyjscie(), a po jej wykonaniu pętla zostaje zakończona, co oznacza w większości przypadków zakończenie pracy programu;

Jeśli chodzi o wyjście z procedury / funkcji nie wychodząc od razu z programu - są dwa sposoby, które robią często to samo, ale nie do końca; Masz dwie procedury - Break i Exit;

Break

Jeśli użyjesz w pęli Break, wyjdziesz tylko z pętli, nie z procedury / funkcji; Czyli:

procedure Foo();
var
  I: Word;
begin
  for I := 0 to 99 do
    if I = 99 then
      Break;

  WriteLn('Wyjście z pętli.');
end;

Napis Wyjście z pętli zostanie wyświetlony w oknie konsoli; W takim jednak przypadku:

procedure Foo();
var
  I, J: Word;
begin
  for I := 0 to 4 do
    begin
      WriteLn('Pętla I');

      for J := 0 to 4 do
        if J = 2 then
          Break
        else
          WriteLn('Pętla J');
    end;

  WriteLn('Wyjście z pętli.');
end;

wyjdziesz jedynie z pętli J, jeśli J = 2; Więc napis Pętla I zawsze wyświelony zostanie 5 razy, a Pętla J zawsze 2 razy;

Exit

Ta procedura powoduje wyjście z procedury / funkcji; Zawsze, nawet jeśli będzie w dziesięciu zagnieżdżonych pętlach; W takim razie:

procedure Foo();
var
  I, J, K: Word;
begin
  for I := 0 to 9 do
    for J := 0 to 4 do
      for K := 0 to 99 do
        if (I = 2) and (J = 2) and (K = 49) then
          Exit;

  WriteLn('Wyjście z pętli.');
end;

napis Wyjście z pętli. nigdy nie zostanie wyświetlony; Przeanalizuj to sobie;

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