![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Service
Fiend © (2002-07-09 18:21:00)В сервисе на Событие OnStart пытаюсь загрузить свою же библию через LoadLibrary. Не грузит. Выяснил, что GetLastError возвращает "Не найден указанный модуль.". Причём указан полный путь к ней.
В обычном приложении без базара гружу ее.
Что делать???????????????
Skier (2002-07-09 18:56:00) [1]>Fiend
Бывает :))
Fiend (2002-07-09 18:55:00) [2]отэто лажанулся я с путём3145245нцкеруенрй24кап
надо то ведь D:\CR\CRResources\Release\CRResources.Dll"
СПОС. Извини что отнял время
Fiend (2002-07-09 18:53:00) [3]отэто лажанулся я с путём3145245нцкеруенрй24кап
надо то ведь D:\CR\CRResources\Release\CRResources.Dll"
СПОС. Извини что отнял время
Skier (2002-07-09 18:53:00) [4]>Fiend
Если ты уверен что она там есть, то попробуй так :
if FileExists(UpperCase("D:\CR\CRResources\CRResources.Dll")) then ...
Fiend (2002-07-09 18:48:00) [5]
> А что если проверить
> if FileExists("D:\CR\CRResources\CRResources.Dll") then
> ...
В натуре не нашёл.
Но она там есть!!!!!!!!!!!!!!!!!
как же так
Skier (2002-07-09 18:45:00) [6]>Fiend
А что если проверить
if FileExists("D:\CR\CRResources\CRResources.Dll") then ...
Будет FileExists находить библиотеку или нет ?
Fiend (2002-07-09 18:41:00) [7]FreeLibrary вызывается в другой процедуре, которая вызывается при остановке сервиса, след., когда сервис работает библия подгружена напостой.
Как таковой Exception не происходит. Я после загрузки библии, проверяю ее Handle на ноль (if hResourcesLibrary=0
), т.е. анализирую, загрузилась ли она.
И выясняется что она не загрузилась. тогда выполняю следующее:
Msg:= AllocMem(65535);
formatmessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,GetLastError,0,Msg,100,nil);
CRService.LogMessage("
Skier (2002-07-09 18:34:00) [8]>Fiend
Где ты вызываешь FreeLibrary ?
И в каком месте генерится ошибка ?
Fiend (2002-07-09 18:28:00) [9]базара нема.
это собсно обработчик события:
procedure TCRService.ServiceStart(Sender: TService; var Started: Boolean);
begin
StartServer;
end;
а это то что он вызывает:
procedure StartServer;
var Reg: TRegIniFile;
Msg: PChar;
begin
if CommunicationThread<>nil then exit;
Reg:= TRegIniFile.Create;
Reg.OpenKey("CRS", true);
ConnectionString:= Reg.ReadString("CRS","ConnectionString","");
Reg.Free;
if Connections=nil
then Connections:=TList.Create;
if hResourcesLibrary=0
then hResourcesLibrary:=LoadLibrary("D:\CR\CRResources\CRResources.Dll");
if hResourcesLibrary=0
then begin
Msg:= AllocMem(65535);
formatmessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,GetLastError,0,Msg,100,nil);
CRService.LogMessage("
Skier (2002-07-09 18:25:00) [10]>Fiend
А что если код показать ?