Hi,
hab mal bei meinem TurboDelphi nachgesehen.
Delphi-Quellcode:
{$IFDEF PC_MAPPED_EXCEPTIONS}
const
UW_EXC_CLASS_BORLANDCPP = $FBEE0001;
UW_EXC_CLASS_BORLANDDELPHI = $FBEE0101;
type
// The following _Unwind_* types represent unwind.h
_Unwind_Word = LongWord;
_Unwind_Exception_Cleanup_Fn = Pointer;
_Unwind_Exception = packed record
exception_class: _Unwind_Word;
exception_cleanup: _Unwind_Exception_Cleanup_Fn;
private_1: _Unwind_Word;
private_2: _Unwind_Word;
end;
PRaisedException = ^TRaisedException;
TRaisedException = packed record
RefCount: Integer;
ExceptObject: TObject;
ExceptionAddr: Pointer;
HandlerEBP: LongWord;
Flags: LongWord;
Cleanup: Pointer;
Prev: PRaisedException;
ReleaseProc: Pointer;
end;
{$ELSE}
PRaiseFrame = ^TRaiseFrame;
TRaiseFrame = packed record
NextRaise: PRaiseFrame;
ExceptAddr: Pointer;
ExceptObject: TObject;
ExceptionRecord: PExceptionRecord;
end;
{$ENDIF}
Jedenfalls scheint es standarsmäßig wie bei Delphi 5 zu sein (also beim Compilieren von System.pas war PC_MAPPED_EXCEPTIONS undefiniert). Denn folgendes zeigt einen fröhlichen Smiley:
Delphi-Quellcode:
type
PRaiseFrame = ^TRaiseFrame;
TRaiseFrame =
packed record
NextRaise: PRaiseFrame;
ExceptAddr: Pointer;
ExceptObject: TObject;
ExceptionRecord: PExceptionRecord;
end;
begin
try
raise Exception.Create('
');
except
on E:
Exception do
begin
if PRaiseFrame(System.RaiseList).ExceptObject = E
then
ShowMessage('
:-)')
else
ShowMessage('
:-(');
end;
end;
end;
Und nun?
Mfg
FAlter