2014-06-27 43 views
3

我在Windows上運行Lazarus。我真的想讓節目「嗶嗶」。看來,你可以這樣做在帕斯卡使用:Lazarus Pascal蜂鳴聲命令

windows.beep(300,500); 

但不是在拉撒路!是否有另一個我可以使用的命令?

更新:

sysutils.beep() 

這工作,但我真的很想設定的頻率和聲音

回答

6

Afaik這是可以工作多年的功能。 (Dev Pascal已超過十歲)。

不同之處在於,Lazarus不會像Delphi那樣自動將Windows添加到uses子句中。

+0

是否有任何簡單的變通?我真的很想玩弄我正在運行的課程的頻率和持續時間 – pluke

+2

沒有必要的解決方法。只需添加窗口到使用條款,它應該工作。 –

+0

啊,我明白你的意思了,所以'使用Windows;'修復它。謝謝! – pluke

4

的持續時間。如果此功能未在拉撒路聲明,你可以聲明它像:

function Beep(dwFreq, dwDuration: DWORD): BOOL; stdcall; external 'kernel32.dll'; 
+0

謝謝Vitaliy,你可以展示它是如何被稱爲?我試過蜂鳴聲(300,300);但它返回一個錯誤:unit1.pas(34,3)錯誤:錯誤號碼的參數指定呼叫「嗶」 – pluke

+0

聲明之後,你只需要調用像「嗶(300,500);' – VitaliyG

+0

過程TForm1.Button1Click(發件人:TObject); begin Beep(300,300); end; 函數Beep(dwFreq,dwDuration:DWORD):BOOL; STDCALL;外部'kernel32.dll'; 代碼如上 – pluke

0

在Lazarus創建一個新項目並添加一個按鈕。將windows單元添加到使用列表中。 在按鈕的默認事件把你的代碼:

unit Unit1; 

{$mode objfpc}{$H+} 

interface 

uses 
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 

    windows; // added by manually 

type 

    { TForm1 } 

    TForm1 = class(TForm) 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
    private 
    { private declarations } 
    public 
    { public declarations } 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.lfm} 

{ TForm1 } 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    n, 
    freq,dur : integer; 

begin 
    Randomize; 
    for n:=1 to 100 do 
    begin 
     windows.Beep(random(1000)+n,random(100)+100); 
    end; 
end; 

end.