C语句如何对应Delphi语句
WINAPI EEoSetOsdDisplayMode(DWORD dwChannel, DWORD color, DWORD font_size, USHORT* Line1, USHORT* Line2, BOOL bAutoLight=FALSE)
USHORT osdFormat1[] = {0,0, OSD_Year4, '-', OSD_Month2, '-', OSD_Day, ' ',
OSD_Hour12, ':', OSD_Minute, ':', OSD_Second, ' ', 0};
USHORT osdFormat2[] = {0, 0, '0','0, '0, '0', '0', '0',0};
---------------------------
请问上面语句在Delphi中如何对应?
谢谢!
[解决办法]
把数据类型对应好了就可以了。普通类型对普通类型,指针对应指针
[解决办法]
typeTfun=Function(dwChannel,color,font_size : longint; Line1 ,Line2 : PWORD;bAutoLight:Boolean) : integer;stdcall;VAR fData1 : PWORD ; fData2 : PWORD ; PSdk4000Func:Tfun;
[解决办法]
多了一个;bAutoLight:Boolean参数
另外,不正确是编译还是运行?
[解决办法]
USHORT* Line1, USHORT* Line2,是这两指针的问题吧,他们提供的DEMO里面这两指针是什么东西来的。而你用Delphi时输入的是什么?
[解决办法]
TEEoSetOsdDisplayMode = Function(dwChannel,color,font_size : longint; Line1 ,Line2 : PInteger) : integer;stdcall;
指针定义不对吧--PWORD,这两指针你传入的是什么啊。
[解决办法]
运行错误的话,贴下你传入的东西。
[解决办法]
iRet := FunEEoSetOsdDisplayMode(iTV1,10,80,fData1,fData1) ;
不要取地址了吧。后面那个fdata1是不是应该是fdata2啊。
[解决办法]
TEEoSetOsdDisplayMode = Function(dwChannel,color,font_size : longint; Line1 ,Line2 : PInteger) : integer;stdcall;
你都漏了最后一个参数,会导致堆栈异常的。。。。
WINAPI EEoSetOsdDisplayMode(DWORD dwChannel, DWORD color, DWORD font_size, USHORT* Line1, USHORT* Line2【, BOOL bAutoLight=FALSE】)
上次就指出了
有缺省值的参数,也是需要定义的
[解决办法]
BOOL bAutoLight=FALSE这是默认参数,你在Delphi中的原型定义不对,应该是:
TEEoSetOsdDisplayMode = Function(dwChannel, color, font_size: cardinal; Line1, Line2: PWord; bAutoLight: longbool = false) : integer;stdcall;
[解决办法]
后面的参数已经去掉了?那不应该调用出错呀。
[解决办法]
iRet := FunEEoSetOsdDisplayMode(iTV1,10,80,fData1,fData1) ;
不要取地址了吧,fdata1,fdata2本身已经是地址吧。getmem(fdata1,size)这个size是不是小于他DMEO里面传进去的SIZE哦。