![]() |
globale variable
Hi Leuts,
wenn ich in zB: Form1 eine var posit:integer; deklariere steht sie in Form2 nicht zu Verfügung. Obwohl in den Units die Forms "sich sehen".Ich meine in Form1 steht uses: Unit1 usw... Warum kann ich in Form2 nicht auf sie zugreifen?? |
Moin Privateer,
wo hast Du die Variable denn deklariert? |
Steht die Unit in der uses-Klausel im interface-Teil oder im implementation-Teil? Falls sie im implementation-Teil steht, musst du den Namen der Unit angeben, wenn du sie aus einer anderen Unit aufrufst.
|
Zitat:
|
Moin Leuts,
in diesem Teil steht das:
Code:
und eigentlich muss ich auf all diese Variablen von jedem Form zugreifen,
private
{ Private-Deklarationen } public end; var Form1: TForm1; blinker,Anzahlsicht,posit,protset: integer; BGFarbindex,FontFarbindex: String; puff,Durch,Differ: Currency; Nexttick: DWORD; Comma: Boolean=false; implementation uses Unit2,Unit3,Unit4, Unit5; {$R *.DFM} da hier GRundeinstelluingen stehen.Momentan mach ich das nur mit Tricks, weil ich es nicht anders weiss. |
Moin Privateer,
da man sich unter Umständen leicht mal Zirkelbezüge zwischen den Units einhandeln kann, fände ich es eine gute Idee diese Dinge (in diesem Falle die Variablendeklarationen), die global von allen Units aus erreichbar sein müssen in eine eigens dafür erstellte Unit auszulagern. Die kann dann, im interface Abschnitt, in jede Unit eingebunden werden, die's braucht. |
Jetzt hast du den Finger genau in eine Wunde gelegt.
Ich habe schon öfters probiert Proceduren uä. auszulagern. Ich habe es nie geschafft.Immer ging irgendwas nicht. Auch wenn ich mich an Tuts gehalten habe, habe ich es nicht verstanden. Wie geht sowas denn nun`??? |
Hi,
Zitat:
Guß Hansa |
Moin Privateer,
oder aber Du hast vergessen im Interfaceabschnitt die Funktionsaufrufe auch noch zu deklarieren. Was da nicht steht, kann auch von keiner anderen Unit verwendet werden. z.B.
Delphi-Quellcode:
Überall, wo die Unit Test eingebunden wird, sollte man jetzt auf die Prozedure MeineAllgemeineProzedur zugreifen können.
Unit Test
//.... procedure MeineAllgemeineProzedur; implementation procedure MeineAllgemeineProzedur; begin //... end; |
mir ging es eigetnlich um die Variablen
Code:
die ich in jeder Unit bräuchte.
var
Form1: TForm1; blinker,Anzahlsicht,posit,protset: integer; BGFarbindex,FontFarbindex: String; puff,Durch,Differ: Currency; Nexttick: DWORD; Comma: Boolean=false; Denn diese enthalten werte für Timer,labels und edits. Bzw. integer-werte die auf anderen Units gebraucht werden. |
Moin Privateer,
na da, wo Du eine Funktion veröffentlichen müsstest, also vor implementation, gehören die Deklarationen hin. |
Zitat:
|
Eher aneinandervorbei-geschrieben. Es ging um die Deklaration, aber Du hast vom Einsatz (der Implementation) geschrieben. :D
|
Ja, das kann schon sein. Da ich das alles mehr oder weniger autodidaktisch gelernt hab, mangelts ein bisschen an den genauen Bezeichnungen. :angle2:
|
Gehe ich richtig der Annahme das der interface dann bis zu implementation geht?
Ansonsten habe ich es doch richtig gemacht und trotzdem ist kein Zugriff möglich :evil: Auszug:
Code:
private
{ Private-Deklarationen } public end; var Form1: TForm1; blinker,Anzahlsicht,posit,protset: integer; BGFarbindex,FontFarbindex: String; puff,Durch,Differ: Currency; Nexttick: DWORD; Comma: Boolean=false; implementation uses Unit2,Unit3,Unit4, Unit5; |
Zitat:
Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 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-2025 by Thomas Breitkreuz