vc函数定义转成delphi的函数定义,请帮忙!等待。。。。(100分)

  • 主题发起人 songyanzhao
  • 开始时间
S

songyanzhao

Unregistered / Unconfirmed
GUEST, unregistred user!
C++函数定义为
CPLAYER_API LONG __stdcall MP4_ClientStart(PCLIENT_VIDEOINFO pClientinfo,void(CALLBACK *ReadDataCallBack)(DWORD nPort,UCHAR *pPacketBuffer,DWORD nPacketSize));
第一个参数定义:
typedef struct{
BYTE m_bRemoteChannel;
BYTE m_bSendMode;
BYTE m_bRight;
char *m_sIPAddress;
char *m_sUserName;
char *m_sUserPassword;
BOOL m_bUserCheck;
HWND m_hShowVideo;
}CLIENT_VIDEOINFO, *PCLIENT_VIDEOINFO;
在VC的调用如下:
nn2 = MP4_ClientStart(&aa6,NULL);
请问我在DELPHI里面应该怎样定义和调用此函数!
我在DELPHI如下调用:
MP4_ClientStart(pcinfo,0);
其中pcinfo是第一个参数,0代表指针为空
总是报错:access violation at address 1000b628 in module 'hikclient.dll'
 
MP4_ClientStart(pcinfo,nil);delphi中也有NIL呀
 
MP4_ClientStart(pcinfo,0); 不能这样调用吧!
MP4_ClientStart(pcinfo, nil)这样试看
 
结构:
type
PCLIENT_VIDEOINFO=^TCLIENT_VIDEOINFO;
TCLIENT_VIDEOINFO=Packed Record
m_bRemoteChannel: BYTE;
m_bSendMode : BYTE ;
m_bRight: BYTE ;
m_sIPAddress: Pchar;
m_sUserName: Pchar;
m_sUserPassword: Pchar;
m_bUserCheck: boolean;
m_hShowVideo: HWND ;
end;

TReadDataCallBack=procedure(nPort:Word;PPackedBuffer:pChar;nPacketSize);
函数:MP4_ClientStart(pClientinfo PCLIENT_VIDEOINFO;ReadDataCallBack:TReadDataCallBack);
 
调用时,如果不指定回调函数,
直接用:
MP4_ClientStart(pcinfo, nil);
 
我换成NIL也不行,关键是怎么在DELPHI里定义这个函数呀,你们看第2个参数,他里面涉及到一个回调函数的问题!
 
book523,我把程序该成你说的那样之后,还是有错误:
access violation at address 004211f5 in module 'jiankong.exe'
 
怎么没人回答了,帮忙呀
 
你是那里出现的问题,应该不是调用函数的时候吧:
调用过程相关代码:
var
pcinfo:pCLIENT_VIDEOINFO;
begin
New(pcinfo);//一定要,要不然铁定出错, 下面赋值:
pcinfo^.m_bRemoteChannel:=....;//一项一项赋值。好了后,调用函数;
MP4_ClientStart(pcinfo, nil);
end;
//应该没问题的。就那么几行代码啊。
 
book523,app2001,seven_918,victor7780谢谢你们,
现在好象好了
虽然没有得到理想的结果
 
book523,app2001,seven_918,victor7780谢谢你们,
现在好象好了
虽然没有得到理想的结果
 
多人接受答案了。
 
顶部