读书人

重新开贴关于C++代码转化为Delphi代

发布时间: 2012-04-06 12:22:24 作者: rapoo

重新开贴,关于C++代码转化为Delphi代码!
char JidTp[800];
strcpy(JidTp,strTemp);
Func_b(0, (short*)JidTp);
其中Func_b是一个调用C++写的dll里的一个函数,
Func_b的第二个参数是short型,代表一个字符串在内存的首地址,short在Delphi 里对应的是smallint,
我照着写了下面的代码:
var
Jid:Smallint;
i:integer;
Tempstr:array [0..799] of char;
begin

for i:=0 to 799 do
begin
Tempstr[i]:=#13;
end;
Tempstr:='jerry12345';
Jid:=Smallint(@Tempstr);
Func_b(1,Jid);
end;
但还是不对!,。。。。。已经困饶小弟很长时间了!

[解决办法]
把Func_b函数申明成:

Delphi(Pascal) code
procedure Func_b(i: Integer;  p: PChar);  stdcall; external 'xxx.dll';
[解决办法]
改为
procedure Func_b(i: Integer; p: PWChar); stdcall; external 'xxx.dll';

Tempstr:array [0..799] of char;
改为
Tempstr:array [0..799] of WChar;


[解决办法]
Func_b(0, (short*)JidTp);
JidTp是个指针
你用Jid:Smallint代替是不行的

看我的代码

变量申明
var
JidTp:array[0..799] of char;



调用
Func_b(0,@JidTp[0]);
[解决办法]
Tempstr:='jerry12345';

这句话错了.

还有, 把C语言的个是贴出来,这问题好解决,我擅长萨。

读书人网 >.NET

热点推荐