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