Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Variablen für gesamtes Projekt


Daniel_100 - Sa 24.04.04 23:43
Titel: Variablen für gesamtes Projekt
Hallo!

Kann man Variablen, die für das gesamte Projekt gelten, erstellen, so dass man in jeder Form dieselbe Variable nutzen kann?

Danke

Daniel


Moderiert von user profile icontommie-lie: Topic verschoben


Raphael O. - Sa 24.04.04 23:45

diese Frage kam schon mehrmals in den letzten Tagen :roll:
du musst die entsprechende Variable im PublicTeil deiner Form deklarieren und kannst dann von den anderen Units aus darauf über Form1.variablenname zugreifen...
(Form1 durch Formnamen ersetzen)


tommie-lie - So 25.04.04 15:21

Alternativ geht's auch mit einer globalen Variable, die sind eigentlich dafür gemacht worden. Als Feld einer Form würde ich es nur machen,w enn es wirklcih direkt mit der Form zusammenhängt.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
unit Unit1;

interface

uses
  {...}

type
  {...}
var
  {...}
  <span style="color: red">meine_globale_variable: TMeinTyp;</span>


implementation

{$R *.dfm}

{...}

end.
Und in jeder Unit, in der du "meine_globale_variable" benutzen willst, musst du oben unter "uses" die entsprechende Unit einfügen, in diesem Fall ist es "Unit1".


MSCH - So 25.04.04 16:20

isch aber nicht schööön.
Die klassische OOP würde empfehlen, dass alle zu nutzenden Variablen gekapselt sein müssen.
Also, wenn dein Projekt zum Beispiel aus 3 Forms besteht:
1. Schritt
Ableitung einer neuen Klasse von TForm
2. Schritt
Ergänzung dieser Ableitung um die gewünschten Inhalte (z.b. Variablen)
Ergänzung um Sicherung und Herstellung der Variablen (z.b. in eine INI Datei/Registry schreiben)
3. und folgender Schritt
alle "richtigen" Forms werden aus dieser Klasse abgeleitet.


grez
msch


tommie-lie - So 25.04.04 22:03

MSCH hat folgendes geschrieben:
isch aber nicht schööön.
Die klassische OOP würde empfehlen, dass alle zu nutzenden Variablen gekapselt sein müssen.
Das versuchte ich mit dem Satz
tommie-lie hat folgendes geschrieben:
Als Feld einer Form würde ich es nur machen,w enn es wirklcih direkt mit der Form zusammenhängt.
genauer zu erläutern.
Denn es spricht genau gegen den Gedanken der OOP, einfach sämtliche Variablen in Klassen zu verfrachten, die man gerade so findet. Wenn, dann müsste man es in TApplication machen, aber nicht in TForm! Oder man müsste eine neue Klasse erzeugen, die sämtliche Variablen enthält, die global im Projekt verwendet werden, sozusagen ein Container, in den auch Form1 und sämtliche anderen Objektinstanzen rein müssten, denn Forumlare werden auch als globale Variablen deklariert.