数据类型问题:VB调用Delphi的DLL
////Delphi源码如下,在VB中应该如何正确调用。////////////
////我的调用结果:不是出错就是显示结果完全不对/////////
library DLLTest;
uses
SysUtils,Dialogs,Classes;
{$R *.RES}
Type
str=string[10];
Procedure MyTest(A:String;B:ShortString;C:str;D:PChar;
E:Integer;F:Currency;G:Single;H:Double);stdcall;
Begin
ShowMessage('E='+InttoStr(E));
ShowMessage('F='+FloattoStr(F));
ShowMessage('G='+FloattoStr(G));
ShowMessage('H='+FloattoStr(H));
ShowMessage('A='+A);
ShowMessage('B='+B);
ShowMessage('C='+C);
ShowMessage('D='+D);
End;
exports
myTest;
begin
end.
问题点数:125、回复次数:10Top
1 楼sorry2000(方言)回复于 2001-08-09 19:31:14 得分 50
别用string类型!用Pchar类型Top
2 楼Jiker(涛声依旧)回复于 2001-08-09 19:39:54 得分 0
PCHar也不对呀,我试了的。
我要调用的DLL已经写成了String[n]这种类型。Top
3 楼DreamTiger()回复于 2001-08-09 20:01:45 得分 50
PChar不会有问题,你把你用PChar的dll以及调用写出来看看。Top
4 楼Jiker(涛声依旧)回复于 2001-08-09 20:26:38 得分 0
就是上面的代码,只写一个Pchar的参数,
VB调用时我用
"ABCDE" & Chr(0)
或
"ABCDE"
都不行。Top
5 楼Jiker(涛声依旧)回复于 2001-08-09 20:27:14 得分 0
显示的是"\?","\h"之类的。Top
6 楼Jiker(涛声依旧)回复于 2001-08-10 19:31:51 得分 0
没有人接触这类的问题吗?Top
7 楼amei2000go(浪子)回复于 2001-08-10 20:29:48 得分 0
在VB调用时用Any吧Top
8 楼amei2000go(浪子)回复于 2001-08-10 20:35:26 得分 0
PChar是以0结为的字符串,是为了和C兼容而设的。
所以在VB中调用时,取Chr(0)以前的内容即可Top
9 楼Jiker(涛声依旧)回复于 2001-08-11 00:48:50 得分 0
你们一定要试试呀,讲理论不一定行得通。Top
10 楼hxf812(剑知心)回复于 2001-09-02 00:11:30 得分 25
我也有一个类似的问题,刚刚解决,Vb的参数一定要是定长字符串 dimg a as string * 100;这样你试试,还有D5中参数在函数中赋值一定要用strpcopy函数,否则一定出错Top




