Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konstanten in einer Klasse global definieren (https://www.delphipraxis.net/8238-konstanten-einer-klasse-global-definieren.html)

Minz 31. Aug 2003 19:30


Konstanten in einer Klasse global definieren
 
Ich habe da eine Klasse(Klasse2), die von anderen Klassen(Klasse1) instanziiert werden.

Ich möchte nun das die Konstanten aus Klasse2 für Klasse1 zugänglich ist.

Klassenaufbau:
Delphi-Quellcode:
interface
 type Klasse2=class

   private

   public

 end;
implementation
Wo soll ich die Konstanten nun deklarieren. Unter Public nimmt er sie nicht. Direkt über Implementation nimmt er sie, aber nicht zugänglich für Klasse1 !

Wie denn dann?

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

Christian Seehase 31. Aug 2003 20:19

Re: Konstanten in einer Klasse global definieren
 
Moin Minz,

was verstehst Du in diesem Zusammenhang unter Konstanten?

kiar 31. Aug 2003 20:22

Re: Konstanten in einer Klasse global definieren
 
du musst in deinem constructor der zweiten klasse erst über inherited die erste aufrufen und dann deine konstanten initialisieren , welche im private deklariert sind.

Minz 31. Aug 2003 20:48

Re: Konstanten in einer Klasse global definieren
 
@Christian

Hi, naja eben Konstanten :mrgreen: ,

Neu: achso solche die mit const deklariert werden.

so dass ich von Klasse1 sagen kann:

x:=Klasse2.Konstante1;

und auch von Klasse1 will ich sagen können:

x:=Konstante1

Könnte ich auch mit Variablen machen, aber ich hab halt nen dicken Kopf :bounce1:

@Kiar

das erscheint mir unlogisch! Wenn ichs unter private mache, dann kann doch Klasse1 auf keinen Fall drauf zugreifen...sont wärs ja nicht private !

Ich will Konstanten die nicht extra initialisiert werden müssen, zumindest nicht in der create-methode

Christian Seehase 31. Aug 2003 20:55

Re: Konstanten in einer Klasse global definieren
 
Moin Minz,

Zitat:

Zitat von Minz
Könnte ich auch mit Variablen machen, aber ich hab halt nen dicken Kopf

Deinen Dickkopf in Ehren, aber Klassen enthalten keine Konstanten.
Da wirst Du Dir wohl eine Erweiterung für den Compiler schreiben müssen. ;-)

Minz 31. Aug 2003 21:01

Re: Konstanten in einer Klasse global definieren
 
Mist :mrgreen:

wo krieg ich diesen Smiley mit roten Kopf und der Wand her?

aogwaba 31. Aug 2003 21:01

Re: Konstanten in einer Klasse global definieren
 
Es ist sicher auch Speicherverschwendung, wenn jede Instanz der Klasse dieselben Konstanten beinhaltet.
Du könntest vielleicht eine Class-Function schreiben, welche die gewünschte Konstante liefert:

Code:
class funtion klasse1.getIntegerValue:integer;
begin
result:=101;
end;
dann brauchst du noch nicht mal ne Instanz des Klasse.

cu
waba

Christian Seehase 31. Aug 2003 21:32

Re: Konstanten in einer Klasse global definieren
 
Moin waba,

das muss keine Platzverschwendung sein, wenn der resultiernde Code die Konstanten so verwaltet, dass sie bei mehreren Instanzen einer Klasse nur einmal geladen, und erst beim zerstören der letzten Instanz ebenfalls freigegeben werden.

aogwaba 31. Aug 2003 21:51

Re: Konstanten in einer Klasse global definieren
 
Hallo Christian,
versteh ich nicht ganz, meinst Du so eine Art Object-Factory, welche die
Instanzen verwaltet?
Minz schrieb von Konstanten, deshalb ging ich davon aus das diese in jeder Instanz gleich sind, eben konstant.

cu
waba

Christian Seehase 31. Aug 2003 21:57

Re: Konstanten in einer Klasse global definieren
 
Moin waba,

war nur eine Idee, wie man Konstanten in Klassen implementieren könnte, ohne Platz zu verschwenden. Diese Idee würde ja auch nur dann funktionieren, wenn die Konstanten, wie der Name schon sagt, konstant, und somit in jeder Instanz gleich sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr.
Seite 1 von 2  1 2      

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