![]() |
globale Variablen
Hallo!
Habe eine globale Varibale in der Unit Balken erstellt und möchte in der Unit senden auf diese Variable zugreifen. Leider bekomme ich eine Fehlermeldung und weiß nicht warum...
Delphi-Quellcode:
Folgende Felermeldung wird ausgespuckt:
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, Balken; Zitat:
|
Re: globale Variablen
Du wirst wahrscheinlich in der "Balken"-Unit auf die Unit "Senden" zugreifen und so rufen sie sich gegenseitig auf.
Füg' doch
Delphi-Quellcode:
mal nach dem Wörtchen implementation ein...
uses
Balken; Chris |
Re: globale Variablen
Deine Unit Balken benutzt die Unit Senden.
Zwei Units dürfen sich nicht gegenseitig benutzen (zumindest nicht im Interface-Teil). Das Deutet auf einen Design-Fehler hin. Der Zwang zu einer globalen Variablen übrigens genauso: Sowas sollte man nicht brauchen ;-) Wenn Du aber darauf bestehst eine globale Variable zu benutzen, dann packe die eben in eine dritte Unit (z.B. GlobalVars) und benutze GlobalVars aus Senden und aus Balken. Damit wäre die Zirkuläre Referenz aufgehoben. Dennoch lohnt es sich bei sowas meist, ein paar Gehirnwindungen in ein Redesign der Anwendung zu stecken. Wenn man sowas braucht hat man meistens schon ein Problem im Design und das macht die Wartung der Software gegen später immer ungeheuer unangenehm und schwierig. |
Re: globale Variablen
Zitat:
Gruß Assertor |
Re: globale Variablen
Volltreffer!
Danke!!! Warum sind globale Variablen so verpönt??? Habe ich bis heute nicht begriffen!! |
Re: globale Variablen
Moin lord.paddgington,
Zitat:
Einer Stelle des Programmes wird, unter Umständen, ein erforderliche Wert überschrieben, und man erhält ein unerwartetes Verhalten. Wenn ich denn mal eine globale Variable benötige, bekommt diese immer den Prefix G, damit immer schnell deutlich wird, dass es sich hier um eine solche handelt, und diese mit besonderer Vorsicht behandelt werden muss. I.d.R. werden die dann aber auch nur beim Programmstart initialisiert (Abschnitt Initialization), und anschliessend, eigentlich, nur noch gelesen, wie, z.B., DecimalSeparator in der Unit SysUtils. Das ist auch eine globale Variable. |
Re: globale Variablen
Danke für die Antwort!
Klingt alles sehr plausibel! Werde versuchen, zukünftig darauf zu achten, sehr sparsam mit globalen Variablen umzugehen! Schönes WE |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr. |
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 by Thomas Breitkreuz