Czy ktos moze mi wyjasnic strokture case. Widzialem w paru zrodlach jej urzycie ale jak chcialem sam jej urzyc to nic mi z tego nie wychodzilo--pozdrawiam PEDROS {hello}
Delphi6
Popatrz masz wartość
a : integer;
teraz np. masz jakieś 3 buttony każdy z nich po kolei ustawia zmienną
button1 a := 0;
button2 a := 1;
button3 a := 2;
i chcesz wiedzieć jaki button został wciśnięty (więc nie chcąc namieszać kodu do każdego osobnego buttona typu showmessage('Został nacisnięty button1');, showmessage('Został nacisnięty button2'); itp.)
robisz takie coś
public
procedure sprawdz;
implementation
i te {$r * dfm}
procedure [tform1].sprawdz;
begin
case a of
0: showmessage('Został wciśnięty button'+inttostr(a+1));
1: showmessage('Został wciśnięty button'+inttostr(a+1));
2: showmessage('Został wciśnięty button'+inttostr(a+1));
end;
end;
teraz struktura: case of zastępuje mozolne wpisywanie
if then else
np.
zamiast
if a=0 then
begin
showmessage('Został wciśnięty button1');
end;
if a=1 then
begin
showmessage('Został wciśnięty button2');
end;
if a=2 then
begin
showmessage('Został wciśnięty button3');
end;
wystarczy jedna funkcja case
a teraz przykład czegoś naprawdę wartościowego:
masz takie coś
procedure blabla;
begin
if a = 0 then
begin
a := 1;
end;
if a = 1 then
begin
a:=2;
end;
end;
poweidzmy że nie chcesz aby warunek jeżeli a jest 0 to jest 1 nie pokazywał ci ze a = 2 :)
iteligencja podsuwa :P
procedure blabla;
begin
if a = 1 then
begin
a:=2;
end;
if a = 0 then
begin
a := 1;
end;
end;
ale po co aż tyle pisać jak:
możesz to zastąpić;
case a of
0: cos tam
1: cos tam
end;
lub
case a of
1: cos tam
0: cos tam
end;
Mniej pisania
wytłumaczenie po co to
nie nie będę tłumaczył :]
case a of *wywołanie tej funkcji
0: showmessage('0'); *jezeli a jest 0 to wyswietl 0
1: showmessage('1'); //itp.
end;/zakonczenie funkcji
pamiętaj jedno jezeli a to string to nie będziesz mógł użyć case of
Coś nie jasne??? :)
To juz wiem dlaczego nie chcialo mi dzialac. Chcialem uzyc stringa. --pozdrawiam PEDROS {hello}
Delphi6
Pedros napisał:
To juz wiem dlaczego nie chcialo mi dzialac. Chcialem uzyc stringa.
>
Programuj w Basicu, tam mozna. --Pawel {Delphi6 }
Po pierwsze: naciśnij F1
W instrukcji Case of mozesz uzyc tez else:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_F1:showmessage('Wcisnales F1');
VK_F2:showmessage('Wcisnales F2');
VK_F3:showmessage('Wcisnales F3');
else
showmessage('Wcisnales inny klawisz');
end;
end;
Pozdrawiam {hello}
Spójrz na poniższy przykład:
case Ilosc_paliwa of
0: paliwo:=0;
10: paliwo:=1;
50: paliwo:=3;
end;
Wytłumaczenie:
Patrz jezeli ilosc paliwa bedzie 0 to zostanie wywołana funkcja paliwo:=0.
Wynik musi byc typu integer lub byte
Pozdrawaim:)--