Всем привет!!!
Я жил, не тужил, народу помогал

, короче был хорошим и послушным, но тут случилось бяка…
А бяка заключалась в том, что мне дали Dll-ку с которой мне нуна активно поработать
Я не долго думая сделал «Import Component», в результате получил файл *_TLB.pas, который подключил к своему проекту.
…
IObjDB = interface(IUnknown)
['{9B1611B2-F442-47B3-BE6E-463C82F28F6F}']
….
CoObjDB = class
class function Create: IObjDB;
class function CreateRemote(const MachineName: string): IObjDB;
end;
…
Бросил на форму кнопарь и прописал следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
v : IObjDB;
a : CoObjDB;
begin
v := a.Create;
end;
Думал, что вот оно – счастье, а нет, оказалась «Ж»…
при выполнении этого кода вылетает ошибка…
что тока не делал... даже мышку почистил, но не помогло...
Какой необходимо исполнить танец с бубном, чтобы заработало?
systopler wrote:
а так?
> procedure TForm1.Button1Click(Sender: TObject);
> var
> v : IObjDB;
> begin
> v := CoObjDB.Create;
> end;
или я чего то не досмотрел или одно из двух

Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, ironwit, Вы писали:
I>systopler wrote:
I>а так?
>> procedure TForm1.Button1Click(Sender: TObject);
>> var
>> v : IObjDB;
>> begin
>> v := CoObjDB.Create;
>> end;
I>или я чего то не досмотрел или одно из двух
результат тот же самый
Здравствуйте, systopler, Вы писали:
S>Бросил на форму кнопарь и прописал следующий код:
S>procedure TForm1.Button1Click(Sender: TObject);
S>var
S> v : IObjDB;
S> a : CoObjDB;
S>begin
S> v := a.Create;
S>end;
S>при выполнении этого кода вылетает ошибка…
Во-первых поскольку Create это class function делать объект не нужно, то есть v := CoObjDB.Create; Вы сделали объект a, который по правилам Delphi nil до конструирования и разумеется на попытке вызова его метода вылетаете с AV.
Но вам уже эт посоветовали и как я понял не помгло. Значит попробуйте ещё вот так:
procedure TForm1.Button1Click(Sender: TObject);
var
v : IObjDB;
begin
v := CreateComObject(CLSID_ObjDB) as IObjDB;
end;
Здесь CLSID_ObjDB — GUID вашего кокласса, я не уверен что он именно так называется, подсмотрите его в TLB.
Если при таком раскладе тоже будет вылетать ошибка, значит ошибка внутри кода COM-сервера и с клиентской стороны вы её никак не решите.
Здравствуйте, Tilir, Вы писали:
T>Во-первых поскольку Create это class function делать объект не нужно, то есть v := CoObjDB.Create; Вы сделали объект a, который по правилам Delphi nil до конструирования и разумеется на попытке вызова его метода вылетаете с AV.
T>Но вам уже эт посоветовали и как я понял не помгло. Значит попробуйте ещё вот так:
T>T>procedure TForm1.Button1Click(Sender: TObject);
T>var
T> v : IObjDB;
T>begin
T> v := CreateComObject(CLSID_ObjDB) as IObjDB;
T>end;
T>
T>Здесь CLSID_ObjDB — GUID вашего кокласса, я не уверен что он именно так называется, подсмотрите его в TLB.
T>Если при таком раскладе тоже будет вылетать ошибка, значит ошибка внутри кода COM-сервера и с клиентской стороны вы её никак не решите.
Не помогло. Ошибка таже самая

VBA, C# отлично работают с этим Com-ом, а вот Delphi не хочет
Здравствуйте, systopler, Вы писали:
S>Здравствуйте, Tilir, Вы писали:
T>>Во-первых поскольку Create это class function делать объект не нужно, то есть v := CoObjDB.Create; Вы сделали объект a, который по правилам Delphi nil до конструирования и разумеется на попытке вызова его метода вылетаете с AV.
T>>Но вам уже эт посоветовали и как я понял не помгло. Значит попробуйте ещё вот так:
T>>T>>procedure TForm1.Button1Click(Sender: TObject);
T>>var
T>> v : IObjDB;
T>>begin
T>> v := CreateComObject(CLSID_ObjDB) as IObjDB;
T>>end;
T>>
T>>Здесь CLSID_ObjDB — GUID вашего кокласса, я не уверен что он именно так называется, подсмотрите его в TLB.
T>>Если при таком раскладе тоже будет вылетать ошибка, значит ошибка внутри кода COM-сервера и с клиентской стороны вы её никак не решите.
S>Не помогло. Ошибка таже самая
S>VBA, C# отлично работают с этим Com-ом, а вот Delphi не хочет
Попробуйте добавить:
...
initialization
CoInitialize(nil);
finalization
CoUninitialize;
end.
Здравствуйте, Mckey, Вы писали:
M>Попробуйте добавить:
M>M>...
M>initialization
M> CoInitialize(nil);
M>finalization
M> CoUninitialize;
M>end.
M>
Результат тотже