Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klasseneigenschaften und ihre Getter (abstrakte Klasse) (https://www.delphipraxis.net/92016-klasseneigenschaften-und-ihre-getter-abstrakte-klasse.html)

negaH 14. Mai 2007 16:44

Re: Klasseneigenschaften und ihre Getter (abstrakte Klasse)
 
Sorry, es ist nicht "Unsinnigkeit" in deinem Wunsch nach so einem direkten Weg, sondern die "Sinnlosigkeit" liegt darin begründet das das Klassendesign der Delphi VCL sowas einfach nicht unterstützen kann. Das liegt eben an der Art&Weise wie Delphi die RTTI's zu einer Klasse speichert und später per Unit TypInfo.pas zb. im Object Inspector darauf zugreift.

Ich hatte hier im Forum in einem anderen Thread exakt dieses Problem schonmal angesprochen. Vielleicht findest du dort noch mehr Infos.

Es gibt noch eine Lösung indem du einfach auf die Deklaration als abstract verzichtest. Deine Getter Methode wird dann als leerer Funktionsrumpf implementiert in dem nur eine EAbstract Exception aufgerufen wird.

Gruß Hagen

SirThornberry 14. Mai 2007 17:10

Re: Klasseneigenschaften und ihre Getter (abstrakte Klasse)
 
kurz zusammengefasst. Du willst eine Klassenmethode haben welche man überschreiben kann? Und das geht nicht?

Wen dem so ist dann gehts (indirekt) so:
Delphi-Quellcode:
protected
  function MakeAnything(): Type; virtual; abstract;
public
  class function MakeAnythingClass(): Type;
end;

[...]

class funciton TYourClass.MakeAnythingClass(): Type;
var
  lInstance: TYourClass;
begin
  lInstance := TYourClass.Create();
  try
    result := lInstance.MakeAnyhting();
  finally
    lInstance.Free
  end;
end;

CalganX 14. Mai 2007 17:12

Re: Klasseneigenschaften und ihre Getter (abstrakte Klasse)
 
Hi,
@Hagen: ah, okay. Wenn dem so ist, werde ich mich dem wohl fügen. *g* ;)

@Jens: es geht nicht direkt, richtig. Indirekt gibt es viele Wege und letztlich werde ich es so machen, wie Hagen und alzaimar vorgeschlagen haben - so geht's nämlich ziemlich einfach. :)

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz