delphi做的DLL如何返回pchar类型的变量(100分)

  • 主题发起人 主题发起人 fox_s
  • 开始时间 开始时间
F

fox_s

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi做的DLL如何返回pchar类型的变量
例如:
function Ggg(a:pchar):bool;
如何写这个函数,还有怎么调用,谢谢
 
function Ggg(var a:pchar):bool;

然后把 你想返回的值给 a

在主程序里读去a 就可以了
 
楼上正确
 
你这个返回布尔型的吧。
1.dll

function Ggg:Pchar;
begin
Result:=Pchar('strings');

end;

2。调用

function Ggg:Pchar;external'dll'

var str:string
begin
str=strPas(Ggg)
end;
 
sbzldlb,
我也知道你这种办法,主要我做的这个DLL是要使用vc调用的,给的要求是
bool aa(char * x);这样的话对应的delphi应该声明为
function aa(x:pchar):bool;
还是function aa(var x:pchar):bool; 呢,谢谢
 
delphi做给vc++调用,我没有弄过的
 
nicai_wgl,huangsm_xiu,知道吗,谢谢
 
pchar本身就是一地址指针,是按地址传递的
var x:pchar
和 x: pchar 没区别

只要在调用之前为x分配空间即可
 
52free,我现在用delphi调用这个函数可以返回正确的值,用vc返回的值就不对,郁闷啊,能给举个例子吗
 
外部调的话
var
a: Pchar;
begin
a := StrAlloc(100);
aa(a):
ShowMessage(StrPas(a));
end;

在dll内部给x附值
StrPCopy(x, 'YYYY')


VC的外部调用查似于StrAlloc的语法
 
参数调用顺序对否:
在Delphi写的Dll中的函数后要加上stdcall
再VC中声明这函数前面要加上 __stdcall 因为VC缺省是__cdcel
就是保持调用规范一制!
 
52free,非常感谢,我在delphi调用一点问题都没有,可在vc里调用还是返回不正确啊,
char x;
gg(&x);
还有
char x[100];
gg(x);
这两种方法我都试了,返回都不对啊。还请指教
 
那就是vc调用的写法有问题罗
我以前做医保接口时供his开发商调用业务dll时都是 pchar这种写法
vf, vb, pb 什么开发工具都遇到过调用都没有问题

问题的关键在于在调用函数时要先为x分配空间
 
char *pCh = (char *)malloc(100*sizeof(char));

aa(&pch)


C我不熟啊,这样试试可以不
 
C语言中的LPTSTR类型对应DELPHI的Pchar类型
 
刚才是我弄错了,我刚才用function aa(var x:pchar):bool;试的传不了
用function aa(x:pchar):bool;这种方式就可以了,再次感谢!我的qq是2306205
 
52free,非常感谢,额外开帖300分酬谢,请进来领分,非常愿意和你交个朋友!
 
多人接受答案了。
 

Similar threads

后退
顶部