首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

C语句怎么对应Delphi语句

2012-11-19 
C语句如何对应Delphi语句WINAPI EEoSetOsdDisplayMode(DWORD dwChannel, DWORD color, DWORD font_size, U

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中如何对应?
谢谢!

[解决办法]
把数据类型对应好了就可以了。普通类型对普通类型,指针对应指针
[解决办法]

探讨

已经定义了,可是不正确。
帮忙看下下面的哪里出问题了?谢谢!

************************************
Function(dwChannel,color,font_size : longint; Line1 ,Line2 : PWORD) : integer;stdcall;

VAR
fData1 : PWORD ;
fData2 : ……

[解决办法]
及函数名。

如果是dll中的函数显示加载必须定义函数原型
type
TFun= procedure(....);

否则
type funname(....) ....external dllname;
[解决办法]
PSdk4000Func := GetProcAddress(FSdk4000Func,'EEoSetOsdDisplayMode') ;
if PSdk4000Func <> nil then begin
FunEEoSetOsdDisplayMode := TEEoSetOsdDisplayMode(PSdk4000Func);

************************************************************
GetProcAddress(LoadLibrary的返回值, 函数名)他返回的是函数在进程中的地址。
看看msdn
[解决办法]
Delphi(Pascal) code
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哦。

热点排行