Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi konstantes Klassenattribut?! (https://www.delphipraxis.net/62499-konstantes-klassenattribut.html)

Akku 5. Feb 2006 16:23


konstantes Klassenattribut?!
 
Hallo,
ich suche eine Möglichkeit eine Konstante innerhalb einer Klasse zu definieren. Ein Attribut sozusagen, dass ich bereits bei der Definition initialisieren kann und vor Instanzierung abfragen.

Existiert so etwas in Delphi?

Danke!

Gruß Max

Christian Seehase 5. Feb 2006 16:38

Re: konstantes Klassenattribut?!
 
Moin Max,

leider habe ich für das genannte Problem keine Lösung, aber es stellt sich mir die Frage, wozu das gut sein soll? :gruebel:

Akku 5. Feb 2006 16:56

Re: konstantes Klassenattribut?!
 
hm... ist jetzt echt nicht persönlich gemeint - aber Antworten wie - "wozu soll das gut sein" - sind selten hilfreich...

Ich habe eine Reihe von Klassen, die grafische Outputs von Berechnungen liefern sollen. Jetzt wäre es schön, wenn ich die Dimension, die sie unterstützen, von vorneherein fix in jede Klassen schreiben könnte.

Gruß Max

stoxx 5. Feb 2006 17:01

Re: konstantes Klassenattribut?!
 
für dieses Unterfangen würde sich eine Class Function eignen, die einfach einen Wert zurückgibt.
Klassen Funktionen können auch schon aufgerufen werden, wenn noch kein Objekt der Klasse createt ist.

Delphi-Quellcode:
class function TMyClass.DimensionDerKlasse : Integer
begin
  result := 5;
end;
Aufruf:

Delphi-Quellcode:
a := TMyClass.DimensionDerKlasse;

Christian Seehase 5. Feb 2006 17:06

Re: konstantes Klassenattribut?!
 
Moin Max,

Zitat:

Zitat von Akku
aber Antworten wie - "wozu soll das gut sein" - sind selten hilfreich...

das seh' ich anders: Wenn man erst einmal weiss, wozu etwas gut sein soll, kann man eventuell auch eine Lösung finden, bei der das genannte Problem gar nicht erst auftaucht, und so etwas hatten wir hier schon (öfter) ;-)

Wobei Dir Stoxx ja schon die Lösung gebracht hat.

(Warum hab' ich nicht gleich selber an die Klassenmethoden gedacht :wall:)

marabu 5. Feb 2006 17:13

Re: konstantes Klassenattribut?!
 
Hallo Max,

es gibt sicherlich nur wenige Fälle, in denen ein konstantes Klassenattribut Sinn macht. Ich kenne jetzt keinen solchen Fall und dein Problem scheint mir auch nicht als Präzedenzfall geeignet. Oft werden die 2D-Klassen von den 3D-Klassen sauber getrennt. In einem solchen Fall haben sich globale Konstanten in einer Basis-Unit bewährt, die von den Programmen zur Laufzeit abgefragt werden können.

Freundliche Grüße vom marabu

Akku 7. Feb 2006 14:05

Re: konstantes Klassenattribut?!
 
Zitat:

für dieses Unterfangen würde sich eine Class Function eignen, die einfach einen Wert zurückgibt.
Klassen Funktionen können auch schon aufgerufen werden, wenn noch kein Objekt der Klasse createt ist.
einfach und genial :wall: :hello: - hehe - danke Dir(soll ja jetzt wieder groß geschrieben werden)

Bernhard Geyer 7. Feb 2006 14:29

Re: konstantes Klassenattribut?!
 
Zitat:

Zitat von Akku
ich suche eine Möglichkeit eine Konstante innerhalb einer Klasse zu definieren. Ein Attribut sozusagen, dass ich bereits bei der Definition initialisieren kann und vor Instanzierung abfragen.

Existiert so etwas in Delphi?

Klassen-Attribute/Properties existieren AFAIK erst ab D2006 auch unter Win32. Davor gibt es unter Win32 nur Klassenmethoden.

sir-archimedes 7. Feb 2006 14:30

Re: konstantes Klassenattribut?!
 
Ich finde das Konzept von Klassenvariablen schon ziemlich sinnvoll. Bei Java kann man damit ziemlich schön arbeiten - das vermisse ich ehrlich gesagt ein bisschen bei Delphi. Man kann zwar einiges auch schon mit Klassenfunktionen erledigen, aber einfacher wären manchmal Klassenvariablen. Über eine solche kann man dann ja eine (zur Laufzeit änderbare) "Konstante" erschaffen.

Gruß,
Dominik

sir-archimedes 7. Feb 2006 14:36

Re: konstantes Klassenattribut?!
 
Oh ich nehme alles zurück (ich nutze ja D2006). Habe gerade nachgelesen, wie das mit den Klassenattributen funktioniert. Hatte von Delphi 5 noch im Kopf, dass es so etwas nicht gibt!

Schön - das freut mich :spin2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.

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