"Аноним" <0@users.rsdn.ru> wrote in message news:1758066@news.rsdn.ru... > Народ подскажите возможно ли в протоколе событий указать имя модуля и номер строки где произошла запись в протокол? Спасибо
try
Assert(False);
except
on E : Exception do LogMessage(e.Message);
end;
Posted via RSDN NNTP Server 2.0
Re[2]: протоколирование и номер строки
От:
Аноним
Дата:
07.03.06 16:38
Оценка:
Здравствуйте, wellwell, Вы писали:
W>"Аноним" <0@users.rsdn.ru> wrote in message news:1758066@news.rsdn.ru... >> Народ подскажите возможно ли в протоколе событий указать имя модуля и номер строки где произошла запись в протокол? Спасибо
W>
W> try
W> Assert(False);
W> except
W> on E : Exception do LogMessage(e.Message);
W> end;
W>
я имел ввиду есть ли аналог как в VC директива __LINE__
[Skip]
А>я имел ввиду есть ли аналог как в VC директива __LINE__
Качаем JEDI Code Library.
Курим в сторону JCLDebug.pas JclHookExcept.pas. В проэкте для линковки включите include TD32 debug info (это один из вариантов)
Здравствуйте, Arioch2, Вы писали:
>> Курим в сторону JCLDebug.pas JclHookExcept.pas. В проэкте для линковки >> включите include TD32 debug info (это один из вариантов)
A>Это плохой вариантт — exe увеличится на 100-150%
A>Лучше зайтив меня Project и поставти ьгалочку Include JCL Debug Info
то есть без внешней библиотеки никак? жаль как то недоверяю я сторонним библиотекам, vcl то вроде всю вдоль и поперек излазил
Здравствуйте, Аноним, Вы писали:
А>то есть без внешней библиотеки никак? жаль как то недоверяю я сторонним библиотекам, vcl то вроде всю вдоль и поперек излазил
Здравствуйте, <Аноним>, Вы писали:
А>Народ подскажите возможно ли в протоколе событий указать имя модуля и номер строки где произошла запись в протокол? Спасибо
Если суть дела, протоколирование ошибок программы, то советую прочитать статью http://www.delphimaster.ru/articles/errors/index.html
Кстати, там советуют НЕ использовать в сообщениях об ошибках имя модуля и номер строки:
При разработке программы вы будете выпускать десятки и десятки версий, и естественно, что исходный код будет сильно модифицироваться, а номера линий, на которых располагаются проверочные вызовы, будут постоянно изменяться. И если вдруг ваш пользователь сообщает о том, что в вашей программе сработала проверка на линии N в исходном модуле M, вы должны задаться вопросом, какая версия программы находится у пользователя? Даже если вы сохраните все исходные тексты абсолютно всех версий, такой подход нельзя назвать удобным и ясным, он таит в себе скрытую путаницу и неразбериху, поскольку вам придется отслеживать номера строк в разных версиях программы при просмотре развития программы.
с данной цитатой согласен полностью ... проверено на себе
Здравствуйте, S.Sapronov, Вы писали:
SS>с данной цитатой согласен полностью ... проверено на себе
Моя практика напротив показывает, что по-крайней мере в отладочных целях наличие возможности записи в протокол названия модуля и номера строки было бы крайне удобно. В этом плане delphi очень не хватает нормального препроцессора, благодаря которому в C/C++ возможны __LINE__, __FILE__, __FUNCSIG__ и т.п. В-общем с вышеприведенной цитатой полностью не согласен
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, Аноним, Вы писали:
А>>то есть без внешней библиотеки никак? жаль как то недоверяю я сторонним библиотекам, vcl то вроде всю вдоль и поперек излазил
E>Есть совершенно извращенческий способ:
E>
Здравствуйте, Arioch2, Вы писали:
>> Курим в сторону JCLDebug.pas JclHookExcept.pas. В проэкте для линковки >> включите include TD32 debug info (это один из вариантов)
A>Это плохой вариантт — exe увеличится на 100-150%
A>Лучше зайтив меня Project и поставти ьгалочку Include JCL Debug Info
Полностью присоединяюсь. Протоколирование с помощью _LINE_ и т.д. действительно удобная вещь.
А чтобы не путаться с номерами версий всегда можно указать этот номер в протоколе