![]() |
Zugriff auf Variable anderer Unit
Hallo Leute!
Ich habe gerade ein wahrscheinlich total einfaches Problem, hab aber mit googeln und Forensuche nicht anderes brauchbares gefunden als das was ich denke schon zu tun. Ich rufe aus Form1 über einen Button Form2 auf und möchte dann in Unit2 auf globale Variablen aus Unit1 zugreifen. Quelltexte: Unit1:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type ... var A:integer; implementation uses unit2; ... Unit2:
Delphi-Quellcode:
Leider kommt da für B immer nur null raus, egal was A in Wirklichkeit für einen Wert hat.
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, unit1; type ... var B:integer; implementation {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); begin B:=unit1.A; end; end. Vielen Dank schonmal, Christophaa. |
Re: Zugriff auf Variable anderer Unit
Wann erstellst Du denn die Instanz von TForm2? Ist denn die Variable A da überhaupt schon gesetzt?
Grüße, Uli |
Re: Zugriff auf Variable anderer Unit
Eine globale Integer-Variable hat immer den Startwert 0.
|
Re: Zugriff auf Variable anderer Unit
Hai Christopfaa,
ersteinmal: Herzlich Willkommen in der Delphi-PRAXiS :hello: Ich würde es grundsätzlich vermeiden direckt auf die Variablen einer anderen Unit zugreifen zu müssen. Gönne deiner Form2 lieber ein Property und setze dieses vor dem zeigen der Form. z.B. so:
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Label1: TLabel; procedure FormShow(Sender: TObject); private { Private-Deklarationen } fWert: Integer; public { Public-Deklarationen } property bWert: Integer read fWert write fWert; end; implementation {$R *.dfm} procedure TForm2.FormShow(Sender: TObject); begin Label1.Caption := Format('bWert ist = %d', [fWert]); fWert := 7; end; end.
Delphi-Quellcode:
unit U_Main;
interface uses Windows, Messages, Classes, Graphics, Controls, Forms, StdCtrls, ComCtrls, ExtCtrls, Dialogs; type TDemo_Form = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private aWert: Integer; public { Public-Deklarationen } end; var Demo_Form: TDemo_Form; implementation uses Unit2; {$R *.dfm} procedure TDemo_Form.Button1Click(Sender: TObject); var Form2: TForm2; begin aWert := 5; Form2 := TForm2.Create(self); try Form2.bWert := aWert; Form2.ShowModal; aWert := Form2.bWert; ShowMessageFmt('Jetzt ist aWert = %d', [aWert]); finally Form2.Free; end; end; end. |
Re: Zugriff auf Variable anderer Unit
Zitat:
Never, never use it! Wie in einem anderen Beitrag schon erwähnt, ist es besser, eine Member-Variable mit entsprechender Property zu benutzen. Dann weisst Du immer, was gerade passiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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