Sooo, ich hab nun lange gesucht und ich dachte schon ich spinne, denn bei Tests in neuen Anwendungen war es vorhanden
Am Ende konnte ich es dann doch noch auf das STATIC eingrenzen.
Bei allen Static-Class-Methoden ist Self nicht mehr vorhanden
Nur wie greif ich jetzt darauf zu?
Grund ist, daß ich den Klassentyp an eine Funktion übergeben wollte und das ohne den Typennamen direkt anzugeben, wegen der Fehlerresistenz (falls die Klasse mal umbenannt wird) und falls die Klasse mal abgeleitet wurde und die Ursprungsklasse ein Abkömling ist.
Außerdem kann ich andere Klassen-Prozeduren auch als über nichtqualifizierten Bezeichner direkt ansprechen, wonach doch etwas wie Self vorhanden sein muß?
Testcode:
Delphi-Quellcode:
type
TMyClass = class
private
class procedure abc;
class procedure xyz; static;
end;
class procedure TMyClass.abc;
begin
eineFunktion(Self); // kein Fehler, also Self existiert
end;
class procedure TMyClass.xyz;
begin
abc; // kann auch ohne Pfad aufgerufen werden
eineFunktion(Self); // [DCC Fehler] ...: E2003 Undeklarierter Bezeichner: 'Self'
eineFunktion(TMyClass); // würde gehn, aber will ich nicht so machen
end;
[add]
ach ja, wer jetzt auf die Idee kommt mir vorzuschlagen das STATIC wegzulassen:
das geht nicht, da ich die entsprechende Klassenprozedur in meinem Projekt als Setter für eine Klassen-Property benötige und Delphi da nur Static-Prozeduren zuläßt.