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,谢谢了。 展开
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,谢谢了。 展开
1个回答
展开全部
我记得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 ;
希望对你有帮助!
先定义一个字符串 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是不是你要的结果。
希望你的问题能得到解决!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询