![]() |
AW: EDivByZero ohne Sysutils fangen
Zitat:
Zitat:
|
AW: EDivByZero ohne Sysutils fangen
Zitat:
Stichwort wäre hier: SetExceptionMask |
AW: EDivByZero ohne Sysutils fangen
IMHO initialisiert Delphi die FPU mit Exceptions. SetExceptionMask liegt leider in der Math.pas die Sysutils.pas importiert. Ein direktes Aufrufen von
Delphi-Quellcode:
bringt aber leider auch keine Besserung.
Set8087CW($1372)
|
AW: EDivByZero ohne Sysutils fangen
Zitat:
Zitat:
|
AW: EDivByZero ohne Sysutils fangen
Dieser Handler bekommt von der Exception leider auch nichts mit, außerdem ist er global, was ich nach wie vor gerne vermeiden würde.
|
AW: EDivByZero ohne Sysutils fangen
Zitat:
Es ist eine System-Exception und keine Delphi-Exception. Ohne SysUtils keine Delphi-Exceptions und ohne Delphi-Exceptions (also die Objekte, welche ein Nachfahre von der Klasse Exception sind), gibt es auch keine Try-Except/Finally-Behandlung. Die System-Exception für
Delphi-Quellcode:
hat den Fehlercode 200, welches nach TRuntimeError reDivByZero gemapt wird.
div 0
Mit eingebundener SysUtils wird dann reDivByZero abgefangen und stattdessen eine Exception EDivByZero ausgelöst.
Delphi-Quellcode:
{ RTL error handler }
procedure ErrorHandler(ErrorCode: Byte; ErrorAddr: Pointer); export; var E: Exception; begin case ErrorCode of Ord(reOutOfMemory): E := OutOfMemory; Ord(reInvalidPtr): E := InvalidPointer; Ord(reDivByZero)..Ord(High(TRuntimeError)): begin with ExceptMap[ErrorCode] do E := ExceptTypes[EClass].Create(EIdent); end; else E := CreateInOutError; end; raise E at ErrorAddr; end; const ExceptTypes: array[TExceptType] of ExceptClass = ( EDivByZero, ERangeError, ...); ExceptMap: array[Ord(reDivByZero)..Ord(High(TRuntimeError))] of TExceptRec = ( (EClass: etDivByZero; EIdent: SDivByZero), (EClass: etRangeError; EIdent: SRangeError), ...); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz