![]() |
Variable aus anderer Unit kann nicht richtig ausgelesen werd
Tut mir ja Leid, aber alle schon bestehenden Themen haben mir nicht weitergeholfen.
Ziel: Ich will auf eine Variable einer anderen Unit zugreifen, der Einfachheit halber erstmal mit showmessage(Form1.variable). Problem: Der genannte Befehl erzeugt einfach nur eine leere Meldung. Die auszulesende Variable hat bereits einen Wert erhalten, im Editor wird kein Verbindungsproblem gezeigt, also die Variable scheint korrekt deklariert zu sein. Eine Fehlermeldung kommt auch nicht, weder beim compilieren, noch beim ausführen des Befehls. Was habe ich übersehen?!? ERGÄNZUNG: Habe es bis jetzt nur mit Strings ausprobiert. Jetzt auch mit Integer, zeigt einfach nur 0 an. Also scheinen die Strings geleert zu werden. Wie kann ich bestimmen, dass diese bis zum schließen des Programms dauerhaft zugewiesen bleiben, statt geleert zu werden. |
Re: schon wieder ein Problem mit globale Variablen...
Zitat:
|
Re: schon wieder ein Problem mit globale Variablen...
Zitat:
|
Re: schon wieder ein Problem mit globale Variablen...
Zitat:
Bitte - Danke |
Re: schon wieder ein Problem mit globale Variablen...
Jedenfalls lass die globalen Variablen am besten weg und nimm den normalen Weg über Eigenschaften oder Felder der Formulare, dann gibt es da auch keine Probleme.
|
Re: schon wieder ein Problem mit globale Variablen...
Zuerst die zweite Unit mit der globalen Variable. Der einfachheitshalber habe ich sie bereits in der initialization (also beim Programmstart) zugewiesen. Du kannst es auch anders machen.
Delphi-Quellcode:
Wichtig in Unit2: die globale Variable muß im interface-Teil deklariert sein, nicht in implementation.
unit Unit2;
interface var GlobaleVariable: String; implementation initialization GlobaleVariable := 'Hallo Welt!'; end. Nun die Unit1:
Delphi-Quellcode:
Nicht vergessen die Unit2 unter uses einzutragen.
implementation
{$R *.dfm} uses Unit2; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GlobaleVariable); end; Natürlich kannst du auch aus Unit1 einen Wert zuweisen:
Delphi-Quellcode:
implementation
{$R *.dfm} uses Unit2; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GlobaleVariable); GlobaleVariable := 'Nun die Fortsetzung: Hallo Welt 2.0!'; ShowMessage(GlobaleVariable); end; |
Re: schon wieder ein Problem mit globale Variablen...
Zitat:
|
Re: schon wieder ein Problem mit globale Variablen...
Das habe ich für einen Schreibfehler gehalten, wenn er globale Variable sagt. ;-)
|
Re: schon wieder ein Problem mit globale Variablen...
Ohne Codeschnippsel tappen wir hier nur im Dunkeln :glaskugel:
|
Re: schon wieder ein Problem mit globale Variablen...
Hi,
wieder einmal! Zum xten Mal: Es gibt unter Delphi keine "globalen Variablen". Es gibt nur "Unit-globale" Variablen. Das fatale daran ist: Der Variablenname kann in einer anderen Unit nochmal vorkommen. Es hängt dann nur von der Reihenfolge in der Uses Zeile ab welche Variable du wo erreichst. Also FINGER WEG! Besser ist es eine Variable in eine Klasse zu verpacken! Beispiel:
Delphi-Quellcode:
Viele Grüsse
Unit1
Interface var1:integer; Unit2 Interface var1:integer; Unit3 uses unit1,unit2; var1 kriegst du jetzt von unit1 Unit3 uses unit2,unit1; var1 kriegst du jetzt von unit2 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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