Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.26;
Скачать: CL | DM;

Вниз

TApplicationEvents.OnException получить имя метода из Exception   Найти похожие ветки 

 
Rembo   (2009-05-31 01:14) [0]

В методе TApplicationEvents.OnException прописал это:
(Sender as TComponent).Name и смог писать в лог имя компонента который вызвал иссключение, есть ли способ узнать имя метода который вызвал иссключение?
(Sender as TComponent).MethodName() наверно позволит это, но что указывать в параметре не знаю. Наверно можно брать адрес из Exception.message пропарсив строку:
Access violation at address 0046DCD5 in module "Project1.exe". Read of address 00000000: n/a
но может есть путь попроще?


 
Игорь Шевченко ©   (2009-05-31 01:30) [1]

http://www.delphi-jedi.org jcl jcldebug.pas

uses
 JclDebug;

procedure TfMain.OnApplicationException(Sender: TObject; E: Exception);

 function StackTrace: string;
 var
   SL: TStringList;
 begin
   SL := TStringList.Create;
   try
     with TJclStackInfoList.Create(True, 0, nil) do
     try
       AddToStrings(SL);
       Result := SL.Text;
     finally
       Free;
     end;
   finally
     SL.Free;
   end;
 end;

var
 F: TextFile;
begin
   assignFile(F, LogFileName);
   if FileExists(LogFileName) then
     append(F)
   else
     rewrite(F);
   try
     writeln(F, StackTrace);
   finally
     CloseFile(F);
   end;
   Application.ShowException(E);
end;


 
Германн ©   (2009-05-31 01:51) [2]

Ещё проще http://www.eurekalog.com/
И готовая и дешёвая.


 
Rembo   (2009-05-31 01:57) [3]

А почему

p:=Ptr(StrtoInt(s));
ShowMessage((Sender as TComponent).MethodName(p));

неработает?
p:pointer;
s:string; - содержит вырезаный адрес из строки "Access violation at address 0046DCD5 in module..."
Выдает пустоту(


 
Игорь Шевченко ©   (2009-05-31 02:19) [4]


> А почему
>
> p:=Ptr(StrtoInt(s));
> ShowMessage((Sender as TComponent).MethodName(p));
> неработает?


I give you three guesses


 
clickmaker ©   (2009-06-01 11:47) [5]

> Выдает пустоту(

а что должен выдать?


 
clickmaker ©   (2009-06-01 12:11) [6]

If Address does not point to a published method of the object, MethodName returns an empty string
(c) Help



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

Текущий архив: 2009.07.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
15-1243109560
Tornado
2009-05-24 00:12
2009.07.26
Вопрос по вебу


15-1242737676
Игорь
2009-05-19 16:54
2009.07.26
Протестируйте программу пожалуйста


2-1243592137
Алик
2009-05-29 14:15
2009.07.26
Описание массива с изменяющимся размером элемента данных


15-1240783011
xenonxenon
2009-04-27 01:56
2009.07.26
Как соединить много текстовых файлов...


15-1242852156
Германн
2009-05-21 00:42
2009.07.26
Копирование таблицы из pdf в doc