gpt4 book ai didi

delphi - 将adoconnection从vba传递到delphi

转载 作者:行者123 更新时间:2023-12-03 15:08:39 29 4
gpt4 key购买 nike

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

背景:我期待(希望)VBA 宏: 创建 COM 对象, 调用 Delphi DLL, 将 COM 对象传递给 Delphi DLL 过程, 保持事件状态,直到 Delphi DLL 自行关闭(DLL 将具有嵌入的表单供用户交互)。

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

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

最佳答案

你必须将ADO Connection接口(interface)链接_Connection传递给delphi程序然后创建 TADOConnection 实例并用新的接口(interface)链接替换 ​​ConnectionObject

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 关键字 setConnection proc 可从 uotside 中通过 SetDBConnection name 获取,因此您可以 LoadLibrarygetProcAddress 找到它的入口点(我真的不懂 VBA,所以我不能说如何使用它加载库)

关于delphi - 将adoconnection从vba传递到delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434762/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com