Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Globale Variablen (https://www.delphipraxis.net/39676-globale-variablen.html)

mumu 6. Feb 2005 11:48


Globale Variablen
 
ich hab viele Klassen mit sehr vielen Globalen Variablen. Ich will jetzt eigentlich alle auf locale Variablen abändern.

Nur greife ich oft aus einer Klasse heraus auf die Variablen einer anderen Klasse zu.

Mein Problem ist jetzt, dass ich z.B. in Klasse A schauen möchte, welche Variablen diese aus anderen Klassen verwendet. Wie kann man sich das anzeigen lassen? das Problem ist nämlich, dass ich nicht immer klassenname.variable verwendet habe, sondern oft einfach nur den variablennamen angebe und delphi nimmt dann automatisch die Variable aus der anderen Klasse, weil ich diese über uses eingebunden hab.

alcaeus 6. Feb 2005 11:50

Re: Globale Variablen
 
Hallo mumu,

du koenntest die Variablen, welche du global deklariert hast, einfach als private/public-Variablen deiner Formklasse verwenden. Alle Variablen welche du auch in anderen Units brauchst als public deklarieren, die anderen als private. Ist zwar nicht ganz perfekte OOP (normalerweise verwendet man private mit public Get/Set-Methoden), aber es reicht schon mal.

Greetz
alcaeus

Robert_G 6. Feb 2005 11:57

Re: Globale Variablen
 
Globale Variablen hängen doch an keiner Klasse.
Das scheußliche an ihnen ist (genau wie mit dumm in der Gegend herumvegitierenden Funktionen), dass sie einfach so in der Source herumlungern.
Öffentliche Zugriiffe auf Werte von Instanzen lassen sich prima über Delphi-Referenz durchsuchenProperties lösen.
Globale Variablen haben genauso wenig mit OOP zu tun wie funktionen, die keine Methoden sind.
Ich kapiere auch gar nicht warum der Delphi Compilier so etwas zulässt :roll: (Turbo Pascal ist 10 Jahre her, warum muss ich mich noch heute mit solchen Altlasten herumärgern? )

mumu 6. Feb 2005 12:03

Re: Globale Variablen
 
ja stimmt hab mich falsch ausgedrückt. ich mein halt dass sich die variablen in verschiedenen units befinden. und ich möchte halt wissen, welche variablen in einer anderen unit deklariert wurden.

Robert_G 6. Feb 2005 12:09

Re: Globale Variablen
 
[Strg+LinksKlick}

mumu 6. Feb 2005 12:17

Re: Globale Variablen
 
ja das ist mir auch klar, das mit strg+Linksklick ich zur definition komm. aber ich hab halt in meinem ganzen rießen quellcode vielleicht 100 mal auf variablen einer anderen unit zugegriffen. und ich möchte mir alle variablen aufzeigen lassen. gibts da in delphi ne option, oder irgend ein tool dafür.

Oxmyx 6. Feb 2005 12:19

Re: Globale Variablen
 
Zitat:

Zitat von Robert_G
Globale Variablen hängen doch an keiner Klasse.
Das scheußliche an ihnen ist (genau wie mit dumm in der Gegend herumvegitierenden Funktionen), dass sie einfach so in der Source herumlungern.
Öffentliche Zugriiffe auf Werte von Instanzen lassen sich prima über Delphi-Referenz durchsuchenProperties lösen.
Globale Variablen haben genauso wenig mit OOP zu tun wie funktionen, die keine Methoden sind.
Ich kapiere auch gar nicht warum der Delphi Compilier so etwas zulässt :roll: (Turbo Pascal ist 10 Jahre her, warum muss ich mich noch heute mit solchen Altlasten herumärgern? )

Weil es in Einzelfällen sehr praktisch ist. Und das mit den öffentlichen Funktionen ist ja wohl ein Witz -- soll man etwa erst eine Instanz von Math erzeugen müssen, um eine Mathefunktion verwenden zu können?
Nebenbei zwingt dich niemand, öffentliche Variablen und Funktionen zu verwenden. Du musst dich nicht damit herumärgern, wenn du nicht willst.
Für alle anderen {edit by Admin} sind sie hilfreich und nicht wegzudenken.

[edit=Admin]Wenn es ein 'Witz' war, dann war er schlecht. Ausdruck entfernt. Mfg, Daniel[/edit]

dizzy 6. Feb 2005 12:33

Re: Globale Variablen
 
@Oxmyx: Wie wäre es mit Klassenmethoden?

@Topic: Grundsätzlich sei gesagt, dass der gesamte Programmaufbau, wie du ja grad merkst, mit globalen Variablen ziemlich verhunzt wird, und man schnell die Übersicht verliert. Genau deshalb ist das Konzept tot. Die auf lange Sicht einzig vernünftige Vorgehendweise wäre ein komplettes Umstrukturieren des Programmes nach OOP. Das wäre das konsequenteste. Alternativ könntest du dir, wo du ja scheinbar schon sehr viel geschrieben hast, eine einzige Unit machen, die alle deine globalen Variablen enthält, und die dann überall eingebunden würde. Ist zwar nicht wirklich schön, aber du weisst immer von wo sie kommen.
Konsequenter wäre es aber trotzdem sie zu Membern deiner Formularklassen etc. zu machen, und dann immer mit Instanz.Variable anzusprechen. Auch dann weisst du immer genau wo sie her kommt, und es gibt keine solche hässlichen Überschneidungen bei mehreren gleichlautenden Bezeichnern in mehreren Units (da geht's Geheule nämlich erst richtig los ;) ).

Gruss,
Fabian

Robert_G 6. Feb 2005 12:43

Re: Globale Variablen
 
Zitat:

Zitat von dizzy
@Oxmyx: Wie wäre es mit Klassenmethoden?

Genau!
Das ist auch etwas, dass Borland anscheinend selbst nicht ganz kapiert hat.
Sonst würden sie einen nicht mit 5 Mio. Bezeichnern zuschütten, selbst wenn man keine Unit (also nur System) eingebunden hat.


[edit=Admin]Quote aus Beitrag weiter oben entfernt. War zum Glück eh' OT. Mfg, Daniel[/edit]

Oxmyx 6. Feb 2005 13:00

Re: Globale Variablen
 
Zitat:

Zitat von dizzy
@Oxmyx: Wie wäre es mit Klassenmethoden?

Was sind denn Klassenmethoden? Im Prinzip auch nur öffentliche Funktionen. Sie sind an keine Instanz einer Klasse gebunden.
Nebenbei hat Delphi doch das Konzept der Units. Wenn alle meine Mathefunktionen in der Unit Math drinstehen, dann kann ich doch darauf zugreifen mit z.B. Math.Power. Da reduziert sich der Unterschied zu Klassenmethoden auf ein Minimum.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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