Subversion Repositories calllib

Compare Revisions

Regard whitespace Rev 4 → Rev 5

/trunk/Src/MakeCall.dpr
2,29 → 2,56
 
uses
SysUtils,
hbTAPI;
AnsiStrings,
hbTAPI,
dialogs;
 
{$R *.res}
 
function GetTapiDevices(buf: PAnsiChar): integer; stdcall;
function GetTapiDevicesA(buf: PAnsiChar): integer; stdcall;
var
mTapiLine: TTapiLine;
mTapiLine: ThbTapiLine;
len: Integer;
s: string;
s: AnsiString;
begin
mTapiLine := TTapiLine.Create(nil);
mTapiLine := ThbTapiLine.Create(nil);
try
try
mTapiLine.Active := false;
s := mTapiLine.DeviceList.Text;
len := Length(s);
s := AnsiString(mTapiLine.DeviceList.Text);
len := (Length(s)+1{NUL}) * SizeOf(AnsiChar);
if buf <> nil then
begin
FillChar(buf^, len+1{NUL}, 0);
FillChar(buf^, len, 0);
AnsiStrings.StrPCopy(buf, s);
end;
result := len;
except
result := -1;
end;
finally
FreeAndNil(mTapiLine);
end;
end;
 
function GetTapiDevicesW(buf: PWideChar): integer; stdcall;
var
mTapiLine: ThbTapiLine;
len: Integer;
s: WideString;
begin
mTapiLine := ThbTapiLine.Create(nil);
try
try
mTapiLine.Active := false;
s := WideString(mTapiLine.DeviceList.Text);
len := (Length(s)+1{NUL}) * SizeOf(WideChar);
if buf <> nil then
begin
FillChar(buf^, len, 0);
StrPCopy(buf, s);
result := 0;
end;
result := len+1{NUL};
result := len;
except
result := -1;
end;
33,11 → 60,12
end;
end;
 
function Call(phoneNumber: PAnsiChar; deviceId: integer): integer; stdcall;
function MakeCallA(phoneNumber: PAnsiChar; deviceId: integer): integer; stdcall;
var
mTapiLine: TTapiLine;
mTapiLine: ThbTapiLine;
sPhoneNumber: AnsiString;
begin
mTapiLine := TTapiLine.Create(nil);
mTapiLine := ThbTapiLine.Create(nil);
try
mTapiLine.Active := false;
mTapiLine.CallParams.Flags := 0;
50,7 → 78,8
exit;
end;
try
mTapiLine.MakeCall(AnsiString(phoneNumber));
sPhoneNumber := phoneNumber;
mTapiLine.MakeCall(String(sPhoneNumber));
except
// This can tappen when the headset is active, so the line is busy
result := -2;
62,9 → 91,54
end;
end;
 
{$IFDEF UNICODE}
function MakeCallW(phoneNumber: PWideChar; deviceId: integer): integer; stdcall;
var
mTapiLine: ThbTapiLine;
sPhoneNumber: WideString;
begin
mTapiLine := ThbTapiLine.Create(nil);
try
mTapiLine.Active := false;
mTapiLine.CallParams.Flags := 0;
mTapiLine.DeviceID := deviceId;
mTapiLine.Active := true;
if not mTapiLine.Active then
begin
// Usually "TAPI device not available"
result := -1;
exit;
end;
try
sPhoneNumber := phoneNumber;
mTapiLine.MakeCall(String(sPhoneNumber));
except
// This can tappen when the headset is active, so the line is busy
result := -2;
exit;
end;
result := 0;
finally
FreeAndNil(mTapiLine);
end;
end;
{$ELSE}
function MakeCallW(phoneNumber: PWideChar; deviceId: integer): integer; stdcall;
var
wst: WideString;
ast: AnsiString;
begin
wst := WideString(phoneNumber);
ast := AnsiString(wst);
result := MakeCallA(PAnsiChar(ast), deviceId);
end;
{$ENDIF}
 
exports
Call name 'MakeCall',
GetTapiDevices;
MakeCallA,
MakeCallW,
GetTapiDevicesA,
GetTapiDevicesW;
 
begin
end.