Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

работа с Dll   Найти похожие ветки 

 
Danchik   (2003-07-08 13:59) [0]

Помогите советом /подсказкой/, почему при вызове библиотеки выдаётся сообщение:
... class EOleSysError with message "Не был произведён вызов Colnitialize" ...


 
MBo   (2003-07-08 14:05) [1]

А если его произвести? ;)


 
Digitman   (2003-07-08 14:07) [2]


> почему ... "Не был произведён вызов Colnitialize"


потому что ты, обращаясь к библиотеке в доп.код.потоке, не произвел его.


 
Anatoly Podgoretsky   (2003-07-08 14:11) [3]

Прислушайся к рекомендации (приказу) системы, произведи.


 
Danchik   (2003-07-08 14:19) [4]

Чтото я не всё понял, приведу текст библиотеки:
library dll_proj;

uses
SysUtils,
Classes,
ComObj,
Windows,
ActiveX;

{$R *.res}
Procedure extractor() export; stdcall;
var
ServerIsRunning : boolean;
Unknown : IUnknown;
Result : HResult;
AppProgID : String;
App : Variant;
begin
try
//Указать программный идентификатор приложения-сервера
AppProgID:="AutoCAD.Application"; //тут вместот автокада можно влепить Word
ServerIsRunning := False;
Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
//Создать один экземпляр сервера
App := CreateOleObject(AppProgID)
else
begin
//Соединиться с уже запущенной копией сервера
App := GetActiveOleObject(AppProgID);
( "(load c:/temp/tmp.lsp) Чтото я не всё понял, приведу текст библиотеки:
library dll_proj;

uses
SysUtils,
Classes,
ComObj,
Windows,
ActiveX;

{$R *.res}
Procedure extractor() export; stdcall;
var
ServerIsRunning : boolean;
Unknown : IUnknown;
Result : HResult;
AppProgID : String;
App : Variant;
begin
try
//Указать программный идентификатор приложения-сервера
AppProgID:="AutoCAD.Application"; //тут вместот автокада можно влепить Word
ServerIsRunning := False;
Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
if (Result = MK_E_UNAVAILABLE) then
//Создать один экземпляр сервера
App := CreateOleObject(AppProgID)
else
begin
//Соединиться с уже запущенной копией сервера
App := GetActiveOleObject(AppProgID);
ServerIsRunning := True;
end;
//показать окно приложения на экране и проработать с приложением
App.Visible := True;
App.ActiveDocument.SendCommand("(load c:/temp/tmp.lsp)");
except
// тут ещё кое-что
end;
end;


exports extractor;


begin
end.

Смысл в том, чтобы передать в автокад команду загрузки LISP программы из Dll


 
Digitman   (2003-07-08 14:31) [5]


> Смысл в том, чтобы


смысл в том, чтобы ты рассказал, как ты в доп.код.потоке, обращающемся к DLL, вызываешь из нее процедуру extractor().


 
Digitman   (2003-07-08 14:31) [6]


> Смысл в том, чтобы


смысл в том, чтобы ты рассказал, как ты в доп.код.потоке, обращающемся к DLL, вызываешь из него (из кодового потока) процедуру extractor().


 
Danchik   (2003-07-08 14:37) [7]

Приведу вызов библиотеки:
var
Form1: TForm1;
implementation

Procedure extractor(); stdcall; external "dll_proj.dll";

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
extractor(); // Причём эта строка горит красным
except
ShowMessage("Ошибка при загрузочкеке DLL");
end;
end;


 
Danchik   (2003-07-08 14:37) [8]

Дело в том, что я не сталкивался с потоками


 
Digitman   (2003-07-08 14:49) [9]


> строка горит красным


это как ? а, может, у меня - зеленым ?) почем мне знать, что у тебя там и почему "горит" ?) ... изволь выражаться конкретными общеизвестными терминами)


и - попробуй-ка для начала вот так :

procedure TForm1.Button1Click(Sender: TObject);
begin
CoInitialize(nil);
try
extractor(); // Причём эта строка горит красным
finally
CoUnInitialize;
end;
end;


 
Danchik   (2003-07-08 14:58) [10]

Попробовал вставить, при компиляции:
CoInitialize(nil);
результат:
[Error] test_Dll_n.pas(29): Undeclared identifier: "CoInitialize"


 
Danchik   (2003-07-08 15:00) [11]

Удалено модератором


 
Danchik   (2003-07-08 15:22) [12]

Всем спасибо, я просто неуказал в разделе Uses
ComObj,
Всё заработало !



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
6-24611
ser
2003-06-17 12:49
2003.09.08
Работа с IMAP INDY 9.0


4-24744
Shluz
2003-07-02 12:24
2003.09.08
wm_SetText


4-24749
JS
2003-07-04 19:19
2003.09.08
drag and drop


14-24694
Mr&MsGuns
2003-08-18 22:58
2003.09.08
Будет ли компьютерная революция?


14-24696
xmapa
2003-08-19 15:02
2003.09.08
Безмышиный интерфейс: как сделать главное меню?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский