Außerdem:
Warum ignorierst du böswillig die Fehlermeldungen deines Compilers?
Create, bzw. irgendeine Initialisierung gehört
IMMER vor das Try, denn sonst ist diese Variable im Except/Finally nicht initialisiert, welches dir der Compiler auch gesagt hat.
Delphi-Quellcode:
Result := TTGMessage.Create;
try
...
except // ebenso bei finally
Result.Free;
raise;
end;
Delphi-Quellcode:
Result := nil;
try
Result := TTGMessage.Create;
...
except // ebenso bei finally
Result.Free;
raise;
end;