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

Вниз

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

 
BugMaker   (2002-03-27 12:33) [0]

Есть несколько вопросов. Как можно заставить LogMessage("Не удается прочитать данные в реестре",1,0,1) выдавать нормальные сообщения? У меня в результате получается вот что: Не найдено описание для события с кодом ( 1 ) в источнике ( SFilExch ). Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL сообщений для отображения сообщений удаленного компьютера. В записи события содержится следующая информация: Не удается прочитать данные в реестре. Перекопал весь хелп, но ничего не нашел, где эти самые описания событий можно указать... И еще, похоже, в сервисах невозможно обрабатывать исключения... Это не есть хорошо... Есть ли еще какие- нибудь тонкости в написании сервисов?


 
Shaman_Naydak   (2002-03-27 14:37) [1]

Зачем тебе последняя единичка в параметрах, поставь нолик.

Как это - нельзя обрабатывать исключения???
Уточни, что имел в виду


 
BugMaker   (2002-03-27 14:59) [2]

Можно и нолик, но результат тот же... Или нет? Попробую еще раз :-). А исключения у меня не обрабатывались примерно в таком фрагменте кода:

Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
try
Reg.OpenKey("Software\SomeProgram",false)
SomeString:=Reg.ReadString("SomeKey");
except
{А вот здесь никогда ничего не происходило, даже если такого ключа нет! 8-()}
end;
Reg.Free;


Все это происходило в обработчике OnExecute;


 
vuk   (2002-03-27 15:02) [3]

Про то, как Windows работает с сообщениями в журнале событий и как делать dll с таблицами сообщений написано в книге Рихтера "Программирование серверных приложений для Microsoft Windows 2000"


 
BugMaker   (2002-03-27 15:23) [4]

Вот спасибо, vuk :-) Очень коротко, и главное, информативно :-). А если у меня такой книги нет? Да и поиски сего трактата в сети выявили следующее:
- Что цена книги около 400 рублей
- Что там все на С-ях
Ну ладно, черт бы с этим LogMessage, а с исключениями- то как?


 
vuk   (2002-03-27 16:15) [5]

to BugMaker:
>Очень коротко, и главное, информативно
Я Вам подсказал где искать информацию. Вы предлагаете Вам книгу подарить или всю главу (там 40 страниц на эту тему) целиком сюда вбить? :o) В принципе в MSDN тоже все это есть..

А с исключениями в сервисах все нормально. Обрабатываются без проблем.


 
BugMaker   (2002-03-27 16:35) [6]

Тогда почему чтение из реестра его не вызывает? Или это частный случай? А как нассчет деления на ноль? А оно, кстати, тоже никаких ошибок и исключений не вызывает...

procedure TService1.Timer1Timer(Sender: TObject);
begin
Beep;
end;

procedure TService1.ServiceExecute(Sender: TService);
var
f,f1,f2:Real;
begin
try
f1:=5;
f2:=0;
f:=f1/f2;
except
ErrCode:=2;
Service1.DoStop;
end;
Timer1.Enabled:=True;
while not Terminated do begin
ServiceThread.ProcessRequests(True);
end;
Timer1.Enabled:=False;
end;


То есть делит, и программа продолжает себе пикать дальше... Если совсем убрать обработчик Try...Except, то ситуация не меняется. Мне тоже кажется, что исключения должны работать, но не работают...


 
vuk   (2002-03-27 19:33) [7]

В Вашем первом примере никаких исключений и быть не должно. Вы с отладчиком-то ходили по данному примеру?
А во втором все нормально работает. Не знаю уж что там у Вас не то.


 
BugMaker   (2002-03-28 09:30) [8]

Ууу... Я серьезно извиняюсь... Да, все верно... TRegistry.ReadString не вызывает исключения, а возвращает пустую стоку в случае, если ключа нет (RTFM?! 8-))... Меня сбило с толку то, что ReadBool, ReadFloat, ReadInteger и другие их вызывают. А что касается деления на ноль, то его попросту не происходило, поскольку компилятор, определив, что переменная нигде не используется, выкинул это из кода, то есть под отладчиком это выглядело так: он попросту перескакивал его курсором. Вот если бы в дальнейшем коде F где- то использовалась, исключение бы произошло. Всем спасибо за то, что откликнулись :-). А вот если кто подскажет, как все- таки юзать LogMessage, буду премного благодарен :-)


 
Shaman_Naydak   (2002-03-28 19:53) [9]

Ну ежкин кот напиши
LogMessage("ТЕСТ!") в конце концов...


 
BugMaker   (2002-03-29 11:25) [10]

Да работает это, только говорю же, он у меня напишет этот тест, но только после длительного вступления (см. выше) :-) Некрасиво так :-). В SVCMgr.Pas есть такой объект - TEventLogger. У него, разумеется, есть конструктор Create, в который можно передать строковой параметр FileName :-). Так вот если его руками не создавать, он создается автоматически, но этот самый параметр при этом остается пустым. Осталось только узнать, что это за файл %))


 
vuk   (2002-03-29 11:55) [11]

to BugMaker:
>Осталось только узнать, что это за файл %))
А MSDN читать религия Вам не позволяет? :o)
Это не файл, а имя источника сообщений и по-умолчанию оно совпадает с именем сервиса, а вовсе не пустое.



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
14-77610
Демон
2002-05-21 17:28
2002.06.24
Про Исходный код


1-77375
Night
2002-06-13 13:12
2002.06.24
Запуск из Делфи другую прогу


1-77337
Sticky Fingaz
2002-06-06 20:25
2002.06.24
Интернет в локалке


1-77412
Natalie
2002-06-10 17:10
2002.06.24
Работа с датой!


1-77360
Sniffer
2002-06-13 12:32
2002.06.24
Координаты чужого окна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский