erweiterte Informationen bei EAccessViolation auslesen (war: Über Zugriffsverletzungen...)
-
Hallo,
mir macht im Moment folgendes Problem zu schaffen:
Wenn eine Zugriffverletzung in meinem Programm ausgelöst wird und sie nicht abgefangen wird, bekommt man normalerweise eine MessageBox mit Informationen, an welcher Speicherstelle im Programm sie ausgelöst wurde.
Wenn ich die Exception aber nun mittry... catch (EAccessViolation& Ex) { Application->MessageBox(Ex.Message.c_str(),"",16); }abfange, dann bekomme ich als Meldung nur "EAccessViolation".
Nicht sehr vielsagend, wo bekomme ich diese anderen Informationen her?Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Sieh dir doch einfach mal die Liste an Methoden und Membervariablen an, die z.B. per CodeInsight angeboten werden.
-
Laut Dokumentation hat EAccessViolation keine weiteren relevanten Eigenschaften oder Methoden, nur eben den String "Message".
Bei den meisten (allen?) anderen Exceptions enthält Message auch die komplette Fehlermeldung, nur hier gerade mal nicht...
-
Einfach nochmal komplett lesen, was ich geschrieben hatte.
-
Ist ja schön und recht, und wo bekomme ich CodeInsight her?
Ist das eine Art Plug-in für den BCB?
-
Ja, wenn man mit der Maus auf die Variable geht.....beim debuggen...beim editieren nach dem . oder ->
-
Christian411 schrieb:
Ja, wenn man mit der Maus auf die Variable geht.....beim debuggen...beim editieren nach dem . oder ->
Nicht wirklich...
Ich benutze den BCB 1.Das muss doch irgendwie möglich sein...
das heißt, ich weiß ja genau, dass es möglich ist, nur wie...
GetExceptionInformation() wäre wohl eine gute Funktion, nur lässt sich die nicht in einem catch-Block aufrufen...
-
Ich musste nie mit dem BCB1 arbeiten, deshalb: im Zweifel für den Angeklagten.
EAccessViolation verfügt über eine von EExternal geerbte Membervariable ExceptionRecord.BCB6-Hilfe schrieb:
EExternal is the ancestor of all exception classes that represent Win32 exception codes. EExternal has a public member, ExceptionRecord that points to an EXCEPTION_RECORD data structure:
_EXCEPTION_RECORD *ExceptionRecord;
typedef struct _EXCEPTION_RECORD {
DWORD ExceptionCode;
DWORD ExceptionFlags;
struct _EXCEPTION_RECORD *ExceptionRecord;
PVOID ExceptionAddress;
DWORD NumberParameters;
DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
} EXCEPTION_RECORD;
-
Ok, das wäre hilfreich gewesen...
leider hat EAccessViolation diese Membervariable beim BCB1 nicht, denn EExternal existiert erst gar nicht.
Ich muss mir wohl ernsthaft überlegen, mir eine neuere Version zuzulegen.