AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Variable anderer Unit

Ein Thema von Christophaa · begonnen am 23. Nov 2007 · letzter Beitrag vom 23. Nov 2007
Antwort Antwort
Christophaa

Registriert seit: 22. Nov 2007
1 Beiträge
 
Delphi 7 Enterprise
 
#1

Zugriff auf Variable anderer Unit

  Alt 23. Nov 2007, 00:03
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:
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.
Leider kommt da für B immer nur null raus, egal was A in Wirklichkeit für einen Wert hat.
Vielen Dank schonmal, Christophaa.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriff auf Variable anderer Unit

  Alt 23. Nov 2007, 05:14
Wann erstellst Du denn die Instanz von TForm2? Ist denn die Variable A da überhaupt schon gesetzt?

Grüße,
Uli
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Zugriff auf Variable anderer Unit

  Alt 23. Nov 2007, 06:20
Eine globale Integer-Variable hat immer den Startwert 0.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Zugriff auf Variable anderer Unit

  Alt 23. Nov 2007, 06:53
Hai Christopfaa,

ersteinmal: Herzlich Willkommen in der Delphi-PRAXiS

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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Zugriff auf Variable anderer Unit

  Alt 23. Nov 2007, 07:58
Zitat von Christophaa:
Ich rufe aus Form1 über einen Button Form2 auf und möchte dann in Unit2 auf globale Variablen aus Unit1 zugreifen.
Globale Variablen?
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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