Afficher la pile des appels dans une application Delphi Win32

J'aimerais afficher une trace de la pile dans un dialogue d'erreur dans Delphi 2007 (Win32).

Idéalement, j'aimerais quelque chose comme ceci:

try
  //do something
except on e : exception do
  begin
    //rollback a transaction or whatever i need to do here       
    MessageDlg('An error has occurred!' + #13#10 +
                e.Message + #13#10 +
               'Here is the stack trace:' + #13#10 +
               e.StackTrace,mtError,[mbOK],0);
  end;  //except
end;  /try-except

Et pour la sortie à l'instar de la Pile d'Appel dans l'IDE:

MYPROGRAM.SomeFunction
MYPROGRAM.SomeProcedure
MYPROGRAM.MYPROGRAM
:7c817067 kernel32.RegisterWaitForInputIdle + 0x49

source d'informationauteur JosephStyons