delphi7 函数如何返回pchar参数?

我想用delphi作一个dll,其中有函数functiontypechange(i:string;varp2:pchar):integer;varss:array[1..... 我想用delphi作一个dll,其中有函数function typechange(i:string;var p2:pchar):integer;
var
ss:array[1..10] of byte;
begin
ss[1]:=$01;
ss[2]:=$02;
ss[3]:=$03;
ss[4]:=$04;
ss[5]:=$05;
ss[6]:=$06;
ss[7]:=$07;
ss[8]:=$08;
ss[9]:=$09;
ss[10]:=$0a;
p2:=@ss;
result:=2;
end;
想返回p2为十六进制格式字符串,那位能帮一下。没用过delphi,谢谢了。
展开
 我来答
百度网友456a6ec
2011-12-28
知道答主
回答量:6
采纳率:0%
帮助的人:7.4万
展开全部
我记得delphi里面有个function IntToHex(Value: Integer; Digits: Integer): string; overload;的函数,它是将一个十进制数转换成16进制字符串;那按我的理解你的应该就是这样:
先定义一个字符串 fsStr: string;一个整数I: integer;然后:
for i := 1 to 10 do
begin
fsStr := IntToHex(ss[i]);
end;
p2 := @fsStr ;
希望对你有帮助!
追问
我用vb6调用这个函数时返回的p2是乱码,不是我需要的字符串,用什么办法可以解决?在dll里还是vb里解决?
追答
1、不好意思,fsStr := IntToHex(ss[i]);应该改成:fsStr := fsStr + IntToHex(ss[i]);
p2 := @fsStr ;改成P2 := PCahr(fsStr );这样应该就可以了!
2、如果还是不行,那你试一下直接把fsStr返回,是不是你要的东西。resulte := fsStr;
3、或者你也可以在delphi里面单步运行看下fsStr是不是你要的结果。
希望你的问题能得到解决!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式