-
Возникла проблема с ф-й 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;
-
- выдернуто из контекста, но надеюсь разберешься 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;
-
а не - вру - не поможет, у тебя и так почти тоже самое, ща посмотрю, что за ошибка
-
значение err - левое, а вот нахрена ты второй раз адрес указателя берешь - непонятно... собаку убери...
-
to han_malign. Попробовал твой пример, значение result = - 2743123565.
> значение err - левое ф-я дает неправильное значение ?
подкажы пожалуйста как со структруи VARSTRING взять идентификатор устройства.
-
какие надо параметры передавать в ф-ю linegetid ?
-
> какие надо параметры передавать в ф-ю linegetid ?
для начала надо lineInitializeEx сделать, а вот зачем и почему - читай хелпы. Я тут вольный перевод MSDN-а делать не нанимался...
-
У меня так :
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;
-
Дайте пожалуйста пример использования ф-и lineInitializeEx , и покажите где берете входные параметры
-
>Дайте пожалуйста пример использования ф-и 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;
|