Hi,
The compiler will do this wrapping anyway if you use ansistrings, so the
approach with e.g. a generic record will not cause a lot of overhead
in most
cases.
But using strings or anything similar causes a lot of overhead
It is really bad
Bye,
Benito
On 21.05.23 18:03, Michael Van Canneyt via fpc-pascal wrote:
On Sun, 21 May 2023, Hairy Pixels via fpc-pascal wrote:
On May 21, 2023, at 2:47 PM, Michael Van Canneyt via fpc-pascal
<fpc-pascal@lists.freepascal.org> wrote:
Your example will leak memory in any case, even if there is no
exception,
since you're not freeing the object anywhere..
doh, dumb example on my behalf.
Assuming the result of A is not used outside of Test, the following
is the
only solution:
procedure Test;
var
A : TObject;
begin
A:=TObject.Create;
Try
// call some code in other unit which raise an exception
DoThis;
finally
A.Free
end;
end;
You can try to use interfaces, they will be managed by the compiler.
This is what I was worried about, wrapping all functions or needing
full ARC on all types. Very risk to opt in to this design I would
say. I remain not a fan of exceptions. :)
They're used all over the place in the RTL and FCL, so you better take
them
into account.
The compiler will do this wrapping anyway if you use ansistrings, so the
approach with e.g. a generic record will not cause a lot of overhead
in most
cases.
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal