Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.060 Beiträge
 
Delphi 12 Athens
 
#15

AW: Klassen-Funktion benutzen, ohne die Klasse zu erstellen

  Alt 18. Nov 2010, 11:58
Eine Fehlermeldung wäre ja schon mal was . Und eine Prüfung auf nil ist soooo teuer nun auch nicht, da laufen z.B. in managed Umgebungen ganz andere Dinge unsichtbar ab. Wenn die Instanz nicht nil, und dennoch ungültig ist - das ist was anderes. Dann kann ich ja auch auf die Felder zugrifen und erhalte lustige Dinge.
Und ja, der Debugger wäre wohl eher geeignet an dieser Stelle. Es müsste schlicht eine Exception her.
Ich sehe hier weder einen Grund für eine Fehlermeldung, noch für eine Exception. Der Aufruf FTest.Test(str); wird vom Compiler implizit umgewandelt in so etwas wie TDummyClass.Test(FTest, str); . Solange innerhalb der Methode nicht auf Self (= FTest) zugegriffen wird, ist doch egal, ob das nil ist. Wenn ich aber darauf zugreife, wird eine Nil-Referenz ausgelöst und da wäre dann ja die Exception.

Der Compiler könnte allenfalls einen Hinweis auswerfen, daß die Methode vielleicht besser als Class-Method deklariert werden sollte, aber mehr braucht's IMHO nicht. Eine generelle Überprüfung von Self auf nil halte ich für Verschwendung.

Übrigens funktioniert auch folgendes:

Delphi-Quellcode:
FTest := nil;
FTest.Free;
Die Implementierung von Free prüft dabei explizit auf Self <> nil . Eine solche Überprüfung kann selbstverständlich auch in jeder anderen Methode einer Klasse erfolgen und nach Gusto auf das Ergebnis reagiert werden. Muss ja nicht immer 'ne Exception sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat