![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Tapi -> LineGetId
kolj © (2008-03-27 11:43:00)Возникла проблема с ф-й LineGetId, если кто-то работал исправьте где не правильно. Спасибо .
Значення яке повертає err = - 2743123651
var
hlin:hline;
hCal : HCALL;
DeviceID :^tvarstring;
err,l:longint;
begin
l:= sizeof(deviceid^);
GetMem(deviceid,l);
deviceid.dwTotalSize := l;
err:=linegetid ( 0 , 0, Hcal , LINECALLSELECT_LINE , @deviceid,'wave/out');
if deviceid.dwTotalSize < deviceid.dwNeededSize then begin
l:=deviceid.dwNeededSize;
getmem(deviceid,l);
deviceid.dwTotalSize:=l;
err:=linegetid( 0 , 0 , HCal,LINECALLSELECT_LINE,@deviceid,'wave/out');
end;
GanibalLector (2008-03-29 11:20:00) [1]>Дайте пожалуйста пример использования ф-и lineInitializeEx
Получай:
var R:Longint;
ExParams:pLineInitializeExParams;
begin
ExParams:=AllocMem(SizeOf(TLineInitializeExParams)+1000);
ExParams^.dwTotalSize:=SizeOf(TLineInitializeExParams)+1000;
ExParams^.dwOptions:=FInitOpt;
try
R:=LineInitializeEx(PHLINEAPP(@FAppHandle),hInstance,CallBackFunc,PChar(FAppName ),FNumDev,FAPIHiVer,ExParams^);
if R <>0 then RaiseTAPILineError(R);
case ExParams^.dwOptions of
LINEINITIALIZEEXOPTION_USEEVENT:
begin
FEvent:=ExParams^.Handles.hEvent;
FThread:=TTAPIThread.Create(FAppHandle,FEvent);
end;
end;
finally
FreeMem(ExParams);
end;
end;
kolj (2008-03-28 09:19:00) [2]Дайте пожалуйста пример использования ф-и lineInitializeEx , и покажите где берете входные параметры
GanibalLector (2008-03-27 20:33:00) [3]У меня так :
LINECALLSTATE_CONNECTED:
begin
if Call<>0 then
begin
lVarString := AllocMem(sizeof(lVarString^));
lVarString^.dwTotalSize := sizeof(lVarString^);
lineGetID(0, 0, Call, LINECALLSELECT_CALL, lVarString, 'comm/datamodem');
if lVarString^.dwNeededSize > lVarString^.dwTotalSize then
begin
ReallocMem(lVarString, lVarString^.dwNeededSize);
lVarString^.dwTotalSize := lVarString^.dwNeededSize;
I := lineGetID(0, 0, Call, LINECALLSELECT_CALL, lVarString, 'comm/datamodem');
if TApiFailed(I) then
begin
lineDrop(Call,nil,0);
end;
end;
end;
end;
han_malign (2008-03-27 16:52:00) [4]
> какие надо параметры передавать в ф-ю linegetid ?
для начала надо lineInitializeEx сделать, а вот зачем и почему - читай хелпы.
Я тут вольный перевод MSDN-а делать не нанимался...
kolj (2008-03-27 16:31:00) [5]какие надо параметры передавать в ф-ю linegetid ?
kolj (2008-03-27 16:21:00) [6]to han_malign.
Попробовал твой пример, значение result = - 2743123565.
> значение err - левое
ф-я дает неправильное значение ?
подкажы пожалуйста как со структруи VARSTRING взять идентификатор устройства.
han_malign (2008-03-27 13:50:00) [7]значение err - левое, а вот нахрена ты второй раз адрес указателя берешь - непонятно...
собаку убери...
han_malign (2008-03-27 13:42:00) [8]а не - вру - не поможет, у тебя и так почти тоже самое, ща посмотрю, что за ошибка
han_malign (2008-03-27 13:39:00) [9]- выдернуто из контекста, но надеюсь разберешься
var sz: DWORD;
lpDeviceID: PVarString;
begin
sz:=sizeof(TVarString); lpDeviceID:=nil;
repeat
if(lpDeviceID<>nil)then FreeMem(lpDeviceID);
GetMem(lpDeviceID,sz);fillchar(lpDeviceID^,sz,0);
lpDeviceID.dwTotalSize:=sz;
Result:=lineGetId(F_hLine,dwAddressID,hCall,dwSelect,lpDeviceID,Pointer(lpszDevi ceClass));
sz:=lpDeviceID.dwNeededSize;
until((Result<>0)or(lpDeviceID.dwTotalSize>=lpDeviceID.dwNeededSize));
if(lpDeviceID<>nil)then begin
FreeMem(lpDeviceID);
end;
end;