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

Previous  Top  Next

    
 

 

 

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

 

Я применяю следующий код, однако он работает только под Win9x/me

(Под WinNT/2000/XP вы можете использовать Beep(Tone, Duration)

- задавать тон и продолжительность звучания).

 

Code:

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;

 

 

©Drkb::00076

Взято с Vingrad.ru http://forum.vingrad.ru