c语言编程pchar,Delphi PChar到C const char *

我试图使用本机程序中的C dll.我按照

here解释的虚拟方法场景

让我说我的C函数签名是形式

int Setup(const char* szIp, const char* szPort);

相应的delphi签名是

function Setup(ip, port: PChar):Integer: virtual; cdecl; abstract;

从delphi程序的某个地方我可以打电话

pObj.Setup('192.168.1.100', '97777');

控件进入dll,但szIp和szPort形式参数只接收我从delphi程序传递的ip和port的第一个字符.

我知道它与null在delphi中正确终止字符串有关.所以我也试过以下.

var

pzIp, pzPort: PChar;

szIp, szPort: string;

begin

szIp := '192.168.1.2';

szPort := '9777';

//initilize memory for pchar vars

GetMem(pzIp, Length(szIp)+1);

GetMem(pzPort, Length(szPort)+1);

//null terminate the strings

pzIp[Length(szIp)+1] := #0;

pzPort[Length(szPort)+1] := #0;

//copy strings to pchar

StrPCopy(pzIp, szIp);

StrPCopy(pzPort, szPort);

end.

这也是工作的.当我写pzIp和pzPort时,我得到了奇怪的结果.

忘了说,来自C dll的所有成员函数都是用__stdcall编译并正确导出的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值