2012-02-24 3 views
5

Я ищу, чтобы создать COM-объект в макросе VBA, а затем передать его в DLL Delphi (D2009). Как должна выглядеть декларация моей процедуры в Delphi?pass adoconnection от vba to delphi

фона: Я ожидаю, что (в надежде) УВА макрос: создать объект COM, вызвать Delphi DLL, передать объект COM к процедуре Delphi DLL, остаться в живых до тех пор, Delphi DLL не закрывается (DLL будет иметь встроенные формы для взаимодействия с пользователем).

Я думаю, мне нужно создать функцию обратного вызова, чтобы макрос VBA знал, что я сделан, чтобы он мог привести в порядок, но я буду работать над этим независимо от этого вопроса.

ОБНОВЛЕНИЕ Точнее: что должно быть декларация экспортируемой функции для DLL Delphi.

ответ

8

вы должны пройти ADO интерфейс подключения ссылку _Connection к процедуре DELPHI затем создать экземпляр TADOConnection и заменить 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 соглашение о вызовах. используя ключевое слово exportsetConnection процедурный доступен из uotside с SetDBConnection именем, так что вы можете LoadLibrary и getProcAddress найти точку входа (на самом деле я не знаю, VBA, так что я не могу сказать, как загрузить библиотеку, используя ее)

+0

Спасибо для этого - это будет полезно для следующего этапа. Я добавил к моему первоначальному вопросу, чтобы уточнить, что я ищу декларацию ** export **. –

+0

@SilentD, я добавил код с частью 'exports' – teran

+1

. Нет необходимости в' LoadLibrary'/'GetProcAddress' в VBA. Вы должны использовать 'Declare'. Но 'stdcall' является существенным, так как это все VBA знает. –

Смежные вопросы