Your problems are caused by the following:
We have two procedures/functions called "Beep" that come with Delphi. One is defined in SysUtils (it's a procedure that has been there since Turbo Pascal) and one is defined in Windows (as there's a WinAPI function of the same name).
Since there's no real namespacing in Delphi prior to version 2005 (don't know about version 8), Delphi uses the "closest" one in the project, ie. the one that is last in the uses clause.
Example when you have this:
uses Windows, SysUtils;
procedure Beeper; cdecl;
begin
Beep;
end;
It'll use the Beep from SysUtils, while this
uses SysUtils, Windows;
procedure Beeper; cdecl;
begin
Beep(440, 1000);
end;
will use the Beep from Windows. As you can see the Windows' Beep needs two parameters and that's why you get an error message.
Solution
Either change the order in you uses clause or tell Delphi explicitly which Beep to use. Example:
uses SysUtils, Windows;
procedure Beeper; cdecl;
begin
Beep(440, 1000); // This will call the one defined in Windows (because of the uses clause order.
SysUtils.Beep; // This will call the one defined in SysUtils
Windows.Beep(440, 1000); // This will call the one defined in Windows again.
end;