[fpc-pascal]Constructor failing...
paradice
paradice at paradicesoftware.com
Wed Mar 19 06:17:12 CET 2003
Hi again -
another question; what is the best way to "fail" a constructor call? For
example, I have a constructor "timage.loadimage()", and I want it to return
"nil" if it encounters a problem (e.g. the file name doesn't exist). My
example program is this:
type
mytestclass = class
bobbob : longint;
constructor create;
end;
constructor mytestclass.create;
begin
inherited create;
free; // *** what do I put here?
result := nil;
end;
var
bob : mytestclass;
begin
bob := nil;
writeln('Memavail before: ',memavail);
bob := mytestclass.create;
writeln('Memavail after : ',memavail);
writeln('Bob assigned? ',assigned(bob));
end.
The problem is where the *** is marked; I don't know what to place there to
do everything properly. If I use "free" then there is no memory leak, but
"bob" is "assigned" (the result:=nil does nothing). I also tried "fail" (as
I remember seeing it in the docs somewhere but I couldn't find it again) -
if I do this bob returns "nil" as expected but there is a memory leak. Using
both of them together doesn't help me either. Is there a legal way to do
this?
More information about the fpc-pascal
mailing list