Delphi - база знаний

BEEP для дельфи, который работает, как в TP


BEEP для дельфи, который работает, как в TP



Взято из FAQ:

BEEP , для дельфи , который работает, как в B.Pascal 7.0

Я применяю следующий код, однако он работает только под Win9x/me
(Под WinNT/2000/XP вы можете использовать Beep(Tone, Duration)
- задавать тон и продолжительность звучания).



procedure Sound(Freq : Word);
  var B : Byte;
begin 
if Freq > 18 then  
begin  
Freq := Word(1193181 div LongInt(Freq));  
B := Byte(GetPort($61));   
if (B and 3) = 0 then  
begin  
SetPort($61, Word(B or 3));  
SetPort($43, $B6);  
end;   
SetPort($42, Freq);  
SetPort($42, Freq shr 8);  
end;  
end

procedure NoSound;
  var Value: Word;
begin 
Value := GetPort($61) and $FC;  
SetPort($61, Value);  
end

procedure SetPort(address, Value:Word);
  var bValue: byte;
begin 
bValue := trunc(Value and 255);  
asm  
  mov dx, address  
  mov al, bValue  
  out dx, al  
end;  
end

function GetPort(address:word):word;
var bValue: byte;
begin 
asm  
  mov dx, address  
  in al, dx  
  mov bValue, al  
end;  
GetPort := bValue;
end;

Взято с Vingrad.ru




Содержание раздела