Semafor
funkce
Virtuální semafor. Je použito časovače, který je má nastavení impuzlu na 1 sekundu.
použité objekty
TForm1 = class(TForm)
ShRed: TShape;
ShOrange: TShape;
ShGreen: TShape;
Tcas: TTimer;
Shape1, Shape2, Shape3, Shape4: TShape;
deklarace
Form1: TForm1;
i: integer;
procedury
procedura při vytvoření formuláře
i:= 0;
Tcas.Enabled := true;
procedura pro Timer
Proměnná i se při každém průchodu zvyšuje, tj. při každém novém impuzu hodin se zvýší. Vždy se udělá zbytek po celočíselném dělení, abychom nedostali číslo větší než 21 a semofaor fungoval stále dokola.
i:=(i+1) mod 22;
Časové intevaly jsou 4 (viz. obrázek). V každém intevalu se nastavuje barva světla.
case i of
0..7: begin
ShRed.Brush.Color := ClRed;
ShOrange.Brush .Color := ClBlack;
ShGreen.Brush.Color := ClBlack;
end;
8..9: begin
ShRed.Brush.Color := ClRed;
ShOrange.Brush .Color := ClYellow;
ShGreen.Brush.Color := ClBlack;
end;
10..17: begin
ShRed.Brush.Color := ClBlack;
ShOrange.Brush .Color := ClBlack;
ShGreen.Brush.Color := ClLime;
end;
18..21: begin
ShRed.Brush.Color := ClBlack;
ShOrange.Brush .Color := ClYellow;
ShGreen.Brush.Color := ClBlack;
end;
