N
netup
Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi写了一个内含form的dll给vb的程序员共用, 我用delphi调用时好好的, 但
用vb调用就内存出错, 程式关闭.
接口如下:
showform(AppHandle: thandle;
Var RetValue: Pchar);
stdcall;
实现的原理如:
showform(AppHandle: thandle;
Var RetValue: Pchar);
var Form1:Tform1;
begin
application.handle := appHandle;
Form1 := TForm1.create(application);
try
Form1.showmadle;
{我的一些代码不用想这里出错.....}
retvalue := 'this is return value';
finally
Form1.free;
end;
end;
Vb调用: public declare sub showform lib "findclus" (AppHandle as long;
ByRef RetValue as String)
不知为vb写dll还要注意什么总之我在delphi中一切OK, 但Vb就不能调用;
发现:
1. 去掉AppHandle: thandle后可以掉出dll中的form, 但retvalue返回一个Value;
2. 改dll为函数还回一PCHAR型数据与下发现1一样, 在返回时出错, 但FORM可出来.
总之我就是不明白如何不能返回, 没有一点理由的,
再有: vb 在win api时怎么可以返回VALUE, 我试过如CHARLOWER, 我传的是一个BYVAL的
的参数, 为何就跟传地址一样, 变量会变???? 没想清, 小第急用, 请各位帮忙,谢了
用vb调用就内存出错, 程式关闭.
接口如下:
showform(AppHandle: thandle;
Var RetValue: Pchar);
stdcall;
实现的原理如:
showform(AppHandle: thandle;
Var RetValue: Pchar);
var Form1:Tform1;
begin
application.handle := appHandle;
Form1 := TForm1.create(application);
try
Form1.showmadle;
{我的一些代码不用想这里出错.....}
retvalue := 'this is return value';
finally
Form1.free;
end;
end;
Vb调用: public declare sub showform lib "findclus" (AppHandle as long;
ByRef RetValue as String)
不知为vb写dll还要注意什么总之我在delphi中一切OK, 但Vb就不能调用;
发现:
1. 去掉AppHandle: thandle后可以掉出dll中的form, 但retvalue返回一个Value;
2. 改dll为函数还回一PCHAR型数据与下发现1一样, 在返回时出错, 但FORM可出来.
总之我就是不明白如何不能返回, 没有一点理由的,
再有: vb 在win api时怎么可以返回VALUE, 我试过如CHARLOWER, 我传的是一个BYVAL的
的参数, 为何就跟传地址一样, 变量会变???? 没想清, 小第急用, 请各位帮忙,谢了