delphi7调用com的dll里面的方法老是提示类型不匹配 com 类型的dll 已经在系统上注册成功 test.dll 里面有一个方法 Public Function Read(dd As Double,ii1 As Integer,ss1 As String,ss2 As String, ii2 As Integer) As Long我在delphi7里面申明了一个方法function csdll22(): Longint ; stdcall;
var
lot:Longint;
dou:double;
i12:int64;
s1:widestring;
s2:widestring;
i13:int64;vor:OleVariant;begin
try
vor:=CreateOleObject('ICCardClass.CardProcess');
lot:=vor.Read(dou,i12,s1,s2,i13);
result:= lot;
except
on E:Exception do
begin
showmessage(e.Message) ;
result:=99;
end;
end;
end; 调用 vor.read() 方法 的时候捕获到异常提示 类型不匹配。 用c++调用是成功的。c++ 申明了 BSTR 类型去对应 函数里面的 string 类型
但是在delphi7 中没有找到这个类型,去网上找了下,说是对应到 delphi7的 widestring 但是我调用还是报错 还是提示 类型不匹配。 前辈们 请指导。
delphicomBSTRdll
解决方案 »
- Delphi7中怎么跳转回上一次的代码位置?
- 招聘熟练Delphi开发人员,工作地点在江西九江,up有分
- 有没有可以放Delphi软件的便携式数据采集工具呢?
- 找李维的insideVCL
- 师妹请教:adotable1.loadfromfile起什么作用?
- 请问DirectoryListBox1如何显示远程文件目录,有没有别的控件,万分感谢
- 我想学DELPHI,求助高手
- stringgrid要怎么连接数椐?
- 如何用indy中的组件IDTCPSEVER和IDCLIENT实现多线程通信转发!
- 请大家提供delphi2.0的下载地址,一千五百分相送
- TeeChart 监视CPU温度,可以从右向左出现填满后开始移动,横座标显示几分钟前吗?
- 求有关TField这个类的作用和使用方法的详解
为啥vb中声明的是integer,你delphi中却又用int64
这句又报错 lot:=vor.Read(dou,i12,s1,s2,i13);
[Error] test.dpr(51): Type not allowed in OLE Automation call 是不是还要做什么操作啊? 内存我也申请了
getmem(s1,255);
getmem(s2,255);
coinitialize
....
var
s1,s2:pwidechar;
begin
getmem(s1,256);
getmem(s2,256);
....
lot:=vor.Read(dou,i12,s1,s2,i13);
....
freemem(s1,256);
freemem(s2,256);
....
end; couninitialize
....
[Error] test.dpr(51): Type not allowed in OLE Automation call
另外你初始化com了没
initialization oleinitialize(nil);
finalization oleuninitialize;
我是新手啊,能不能说明白一点啊还是不太懂啊
oleinitialize(nil);
lot:=vor.Read(dou,i12,s1,s2,i13);
oleuninitialize;我加进去了还是编译通不过啊,直接提示这个 这句又报错 lot:=vor.Read(dou,i12,s1,s2,i13);
[Error] test.dpr(51): Type not allowed in OLE Automation call
传到你的baidu云盘上,现在送2tb容量哦,一般人我不告诉的