Autor Beitrag
Maxi
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 23.04.04 21:02 
Hi!

Bin neu hier, und wir müssen was für die Schule machen.
OK, also ich habe zZ 2 Formen also auch 2 Units. Ich bracuhe aber in beiden verschiedene Variablen. Wie mach ich das denn? Gibt es in Delphi auch sowas wie "extern" in C++? Und wie macht man das dann? Und einen Typ (record) bracueh ich auch in beiden Units
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Sa 24.04.04 03:38 
Der interface Teil einer Unit ist die Schnittstelle zu anderen Units. Variablen die im interface deklariert werden, sind auch in anderen Units sichtbar. Allerdings mußt die diese Unit in der anderen unter Uses anmelden, d.h. eintragen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
unit1

interface

uses
  ...

var
  abc: Integer;

...



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
unit2

interface

uses 
  Unit1; <<<<<<<<<<<<<<<<<<<<<<<<

implementation

<<< hier kannst du deine abc Variable nutzen.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.04.04 05:45 
Aber Vorsicht! Globale variablen sind zwar auf der einen Seite eine bequeme Möglichkeit Werte hin und her zu schieben, das kann aber auch ganz schnell nach hinten losgehen. Insbesondere ist die Fehlersuche nicht gnaz unproblematisch, wenn man selber nicht mehr nachvollziehen kann wo welche Variable von was geändert wird.

Deswegen mein Rat, statt globale Variablen lieber mit Parametern arbeiten, um Werte zu übergeben. Desweiteren "verstößt" es gegen die Regel der OOP, was Kapselung und Informationhiding angeht. Eventuell sollte man auch darüber nachdenken, das ganze in eine Klasse zu kapseln. Dazu kann ich jetzt aber bezüglich deines Programmes nicht viel sagen in wie fern es möglich ist, da ich es nicht kenne.
hibbert
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: Sa 24.04.04 11:53 
Hi, versuch doch einfach die Variabel in dem Public Bereich zu deklarieren...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  private
    { Private-Deklarationen }
  public
 test:string;
    { Public-Deklarationen }
  end;


Dann bracuhst du nir noch in der 2. Form zu sagen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
showmessage(form1.test);
end;


Wenn du dann im Compiler eingibst form1. dann öffnet sich ja ein kleines Menü und da steht dann sogar dein Variabeln Name drin :wink:

MfG Hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
Maxi Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Sa 24.04.04 19:03 
Hi, danke für die Antworten, es funzt auch so :-)

ich nehme nicht viele globale variablen, kenn mich in c++ ein wenig aus, von daher weiß ich das mit den Klassen und so. Aber manche dinge, wie zB auch Konstanten und so sind eben am einfachsten als global zu defineiren :-)