Главная страница
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.018 c
2-1243504299
Pavlov
2009-05-28 13:51
2009.07.26
Путь к файлу


8-1195904575
DmT
2007-11-24 14:42
2009.07.26
Вписывание картинки


15-1242860892
Иксик
2009-05-21 03:08
2009.07.26
Как зарегистрировать торговую марку в России?


15-1242807980
Лёха
2009-05-20 12:26
2009.07.26
Генетический алгоритм


15-1242922477
Rouse_
2009-05-21 20:14
2009.07.26
Для интересующихся защитой и в особенности ключами Guardant