Hallo Phoenix,
vielleicht noch ein Tipp?
- ClassName ist eine Klassenmethode, Du brauchst deshalb nicht erst ein Exemplar der Klasse zu erstellen
- Innerhalb von Klassenmethoden kannst Du die Klasse mit Self referenzieren, also
auch Klassenmethoden mit Self.AClassMethod
aufrufen
- Den Konstruktor kann man auch als "Nachricht an die Klasse" verstehen, und kann deshalb innerhalb von Klassenmethoden auch so verwendet werden myObject:= Self.Create
Deine Klassenmethode könnte deshalb vielleicht so aussehen:
Delphi-Quellcode:
class procedure TMyClass.GetValues(out AValue1, AValue2: string);
begin
AValue1:= Self.ClassName;
with Self.Create do
try
Result:= AMethodFromInstance;
finally
Free;
end;
end;
Der Vorteil: Sollte die Methode
AMethodFromInstance eine virtuelle Methode sein und der Aufruf der Klassenmethode
GetValues nicht an
TMyClass sondern an einen Erben gerichtet sein, bei dem die Methode
AMethodFromInstance überschrieben worden ist, würde wg der Polymorphie diese Überladene Methode aufrufen werden, weil ein Exemplar der geerbten Klasse erzeugt worden wäre.
Wäre das Exemplar in
GetValues hingegen mit einer Konkreten Klasse erzeugt worden, also zB
TMyClass.Create, würde stattdessen immer die dort implementierte Version von
AMethodFromInstance aufgerufen werden...