-
у меня с инетом не очень :( не могу достучаться до странички, которую ты мне скинул... можешь сказать в двух словах?
-
>3221225501' C000001D
CoLoadLibrary
Loads a specific DLL into the caller's process. CoLoadLibrary is equivalent to LoadLibraryEx. CoLoadLibrary does not do anything about the lifetime of the library.
Copy Code
HINSTANCE CoLoadLibrary(
LPOLESTR lpszLibName,
BOOL bAutoFree
);
Parameters
lpszLibName
[in] Points to the name of the library to be loaded. The use of this name is the same as in the Win32 function LoadLibrary.
bAutoFree
[in] If TRUE, indicates that this library is freed when it is no longer needed, through a call to either the CoFreeUnusedLibraries or CoUninitialize functions. If FALSE, the library should be explicitly freed with the CoFreeLibrary function.
Note:
The bAutoFree parameter is used only for 16-bit applications. This parameter is ignored for 32-bit and 64-bit applications.
Return Values
Module Handle
Handle of the loaded library.
NULL
Library could not be loaded.
Remarks
The CoGetClassObject function does not call CoLoadLibrary. CoLoadLibrary loads a DLL specified by the lpszLibName parameter into the process that called CoGetClassObject. Containers should not call CoLoadLibrary directly.
Internally, a reference count is kept on the loaded DLL, by using CoLoadLibrary to increment the count and the CoFreeLibrary function to decrement it.
А в VBA и С# работает в тестовых проектах ?
-
> systopler
> не долго думая сделал «Import Component»
Для начала делай как положено - "Import Type Library .."
Устанавливать соотв.компонент совсем не обязательно, хотя такая возможность будет тебе предложена в ходе работы импорт-визарда.
И с бубном прыгать тоже не обязательно - у тебя есть VB-код, успешно работающий с той библ-кой, вот его и портируй в Делфи-код.
Если есть сомнения, приводи сюда этот VB-код, от него и надо плясать.
-
Спасибо. > > не долго думая сделал «Import Component» > Для начала делай как положено - "Import Type Library .."
Я так и сделал. "Import Type Library .." появляется после того как в меню нажимаешь на «Import Component» Работающий код на VBA: Public Type TParamConnect
Base As String
Server As String
BackupPath As String
User As String
Password As String
End Type
Public Function ConnectAdd(ParamCon As TParamConnect, strAliasDb As String) As deObjDBLib.IObjDBConnection
Dim pXmlDoc As New MSXML2.DOMDocument
Dim xmlField As IXMLDOMElement
Dim pObjDb As New deObjDBLib.ObjDB
Set xmlField = pXmlDoc.appendChild(pXmlDoc.createElement("CONNECTION"))
xmlField.setAttribute "Base", ParamCon.Base
xmlField.setAttribute "Server", ParamCon.Server
xmlField.setAttribute "BackupPath", ParamCon.BackupPath
Dim pNewConn As deObjDBLib.IObjDBConnection
Set pNewConn = pObjDb.Connect(xmlField, ParamCon.User, ParamCon.Password)
Set ConnectAdd = pNewConn
End Function
-
Видимо надо попробовать оставить одну строчку
Dim pObjDb As New deObjDBLib.ObjDB
-
Я чего-то не уловил мысли. Зачем и где оставить одну строчку?
-
>systopler (17.08.07 15:40) [25] Тестовый проект на VBA
Dim pObjDb As New deObjDBLib.ObjDB
-
> systopler (17.08.07 05:32)
procedure TForm1.Button1Click(Sender: TObject);
var
v : IObjDB;
begin
v := CoObjDB.Create;
end;
-
в VBA так делать нельзя. верней, можно, но этот код ничего не даст. (эта строчка просто игнорится) Этот код отлично работает: Sub Макрос1()
'
' Макрос1 Макрос
'
Dim pObjDb As deObjDBLib.ObjDB
Set pObjDb = New deObjDBLib.ObjDB
Set pObjDb = Nothing
'
End Sub
-
> procedure TForm1.Button1Click(Sender: TObject);
> var
> v : IObjDB;
> begin
> v := CoObjDB.Create;
> end;
Выдает туже самую ошибку.
-
>systopler (17.08.07 16:11) [28]
Код был взят из systopler (17.08.07 15:06) [23]
CoInitFlags не пробовали менять в начале проекта Delphi ?
-
procedure TForm1.FormCreate(Sender: TObject);
begin
CoInitFlags := Х;
end;
где Х я ставил: COINIT_MULTITHREADED, COINIT_APARTMENTTHREADED, COINIT_DISABLE_OLE1DDE и COINIT_SPEED_OVER_MEMORY результат один и тот же...
-
Спросил у яндекса, что за ошибка C000001D, везде говорят, что виновата библиотека, ошибка в ней...
-
>systopler (17.08.07 16:49) [31]
Project-View Source
Перед Application.Initialize;
-
Уже и там сделал, но результат тот же.
-
Почему VBA открывает и работает с Dll-кой, а Delphi не хочет?
-
>systopler (17.08.07 17:31) [35]
Модуль не коммерческий ?
-
А systopler (17.08.07 16:11) [28] где пробовали ?
-
Коммерческий... мне его дали на расширение, т.е. я должен сделать еще несколько Com объектов (в другой dll-ки), которые будут АКТИВНО использовать эту Dll-ку.
-
>systopler (17.08.07 17:38) [38]
Попробуйте без отладчика.
|