Wozu Free?
Erst garnicht erzeugen, wenn nicht nötig oder möglich.
Delphi-Quellcode:
type
QChar = class
private // or protected or public
class function check_ptr(name: PChar; ptr: uint64): Boolean; static;
protected
function getOrigin: uint64;
public
//constructor Create;
//class function Create: QChar; static; // intern nur dann erzeugen, wenn nötig
class function CreateOrNot: QChar; static; // da dieses "Create" unerwartet auch NIL zurückgeben kann, sollte das auch ersichtlich sein.
end;
class function QChar.check_ptr(name: PChar; ptr: uint64): Boolean;
begin
Result := ptr <> 0;
if not Result then
ErrorMessage(PChar(Format('Error: %s not constructed.',[name])));
end;
class function QChar.CreateOrNot: QChar;
begin
Result := nil;
if check_ptr(ClassName, getOrigin) then
Result := inherited Create;
end;
x := QChar.CreateOrNot;
if Assigned(x) then
...