finally |
Top Previous Next |
What is translated > Statements > finally
The finally keyword after a try block opens a block of code, which is executed regardless of what happened in the try block. Here some cleanup can be done and acquired resources can be freed. C++Builder has an according key word __finally , which does the same in C++, but this is not a standard keyword. For other compilers finally statements have to be simulated. Delphi2Cpp II takes a solution which is presented by Craig Scott::
https://crascit.com/2015/06/03/on-leaving-scope-part-2/
By use of the presented OnLeavingScope class the translation of a try-finally statement looks as follows:
var obj : TObject; begin
try obj := TObject.Create(NIL); ... finally obj.free; end;
->
#include "OnLeavingScope.h"
TObject* Obj = NULL; { auto olsLambda = onLeavingScope([&] { delete Obj; }); Obj = new TObject(NULL); }
olsLambda is a class, which gets a lambda function as parameter to its constructor. This function is stored internally and gets executed in the destructor of the class. The include "OnLeavingScope.h" is inserted automatically.
|
This page belongs to the DelphiXE2Cpp11 Documentation |
DelphiXE2Cpp11 home Content |