首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将adoconnection从vba传递给delphi

将adoconnection从vba传递给delphi
EN

Stack Overflow用户
提问于 2012-02-25 00:54:58
回答 1查看 503关注 0票数 5

我希望在VBA宏中创建一个COM对象,然后将其传递给Delphi DLL (D2009)。我在Delphi中的过程声明应该是什么样子的?

背景:我期望(希望) VBA宏:创建COM对象,调用Delphi DLL,将COM对象传递给Delphi DLL过程,保持活动状态,直到Delphi DLL关闭( DLL将具有供用户交互的嵌入式窗体)。

我认为我需要创建一个回调函数来让VBA宏知道我已经完成了,这样它就可以进行整理了,但是我将独立于这个问题来处理这个问题。

更具体地更新: Delphi DLL的导出函数声明应该是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-25 01:12:12

您必须将ADO连接接口链接_Connection传递给delphi过程,然后创建TADOConnection实例并用新的接口链接替换ConnectionObject

代码语言:javascript
复制
library Project1;
uses ADODB;

{$R *.res}

    procedure SetConnection(aDBConnection : _Connection);  stdcall;
    var connect : TADOConnection;
    begin
        connect := TADOConnection.Create(nil);
        try
            connect.ConnectionObject := aDBConnection;
            //here you can use your connection
        finally
            connect.Free();
        end;
    end;


exports SetConnection name 'SetDBConnection';

begin
end.

最好使用stdcall调用约定。使用export关键字VBA proc可以从uotside获得SetDBConnection名称,所以你可以使用LoadLibrarygetProcAddress来找到它的入口点(真的,我不知道VBA,所以我不能说如何使用它来加载库)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9434762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档