bez względu na to jaki błąd mój program wywołuje, chciałbym użytkownikowi podać domyślny tekst tego błędu i jego numer. jak to najskuteczniej zrobić ?
najpierw próbowałem tak (oczywiście w bloku try-except):
on E:Exception do
begin
result:='#'+E.Message;
FErrorCode:=...;
end;
...okazało się że nie wszystkie klasy błędów (a w szczególności ogólna) mają właściwość ErrorCode. czy to znaczy że niektóre w ogóle nie mają przypisanego numeru ?
na grupie znalazłem coś takiego:
http://groups.google.com/group/borland.public.delphi.objectpascal/browse_frm/thread/d9a5d46404ac8c/2eb9dd209a3a195a?lnk=st&q=EFOpenerror&rnum=4#2eb9dd209a3a195a
więc spróbowałem:
on E:Exception do
begin
result:='#'+E.Message;
FErrorCode:=GetLastError;
end;
w błędzie jednak był ktoś kto myślał że to działa. mi nie działa. GetLastError=0. Intuicja podpowiedziała mi żeby przed słówkiem except zapisać w lokalnej zmiennej GetLastError, jednak jak to nierzadko bywa, myliła się również.
jedyne rozwiązanie które widzę w tej chwili to stworzyć przypadki (on...do) dla wszystkich możliwych wyjątków, i przy tych które posiadają właściwość ErrorCode - skorzystać z niej, a dla innych zgłosić że błąd nie ma numeru i już. ale to oczywiście nonsens bo klas wyjątków jest ciut dużo. więc jak się to powinno zrobić ? może da się jakoś sprawdzić czy powstały wyjątek publikuje właściwość ErrorCode ? ale wydaje mi się że jeszcze inaczej. pomożecie ? :)