Hello, My question at title seems stupid, but the reason why I've get this doubt is just because it get different results between Free Pascal and Delphi in the following example:
=== begin code === program project1; {$IFDEF FPC} {$MODE DELPHI} {$ENDIF} {$IFDEF MSWINDOWS} {$APPTYPE CONSOLE} {$ENDIF} uses SysUtils; type TSomeClass = class public procedure LoadSomething; end; TA = class private FSomeObject: TSomeClass; public constructor Create; virtual; destructor Destroy; override; procedure AfterConstruction; override; procedure BeforeDestruction; override; property SomeObject: TSomeClass read FSomeObject; end; procedure TSomeClass.LoadSomething; begin raise Exception.Create('An exception loading something'); end; constructor TA.Create; begin WriteLn(1); inherited Create; end; destructor TA.Destroy; begin WriteLn(2); inherited Destroy; end; procedure TA.AfterConstruction; begin WriteLn(3); FSomeObject := TSomeClass.Create; FSomeObject.LoadSomething; end; procedure TA.BeforeDestruction; begin WriteLn(4); FSomeObject.Free; end; var VA: TA; begin VA := TA.Create; try finally VA.Free; end; end. === end code === I've compiled it in Free Pascal from trunk (version 3.1.1 [2016/08/26] for x86_64) installed on a Xubuntu 16.04 64 bits, and got the following log: $ ./project1 1 3 2 An unhandled exception occurred at $00000000004001CD: Exception: An exception loading something $00000000004001CD LOADSOMETHING, line 30 of project1.lpr $000000000040045A AFTERCONSTRUCTION, line 50 of project1.lpr $00000000004002CC CREATE, line 38 of project1.lpr $00000000004004FA main, line 62 of project1.lpr and I've compiled the same code in an original version of Delphi Pro (version 10.1 Berlin 24.0.22858.6822), on a Windows 10 64 bits, and I got the log below and a critical exception (notice the result numbers, they are different from similar test compiled in Free Pascal): Win32\Debug>Project1.exe 1 3 4 2 ^C (I need to kill the app by Ctrl+C within terminal) the critical exception was the known: [Main Instruction] Project1.exe has stopped working [Content] Windows is checking for a solution to the problem... So, is it a bug? If so, in which compiler?! Even after reading some documents about BeforeDestruction I still have doubt about which is the correct triggering of this method, and I would be glad if someone could help me to solve it. -- Silvio Clécio
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal