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

重新开贴,关于C++代码转化为Delphi代码!解决方法

2012-04-06 
重新开贴,关于C++代码转化为Delphi代码!charJidTp[800]strcpy(JidTp,strTemp)Func_b(0,(short*)JidTp)

重新开贴,关于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语言的个是贴出来,这问题好解决,我擅长萨。

热点排行