Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - globale Variablen über mehrere Units
Maxi - Fr 23.04.04 21:02
Titel: globale Variablen über mehrere Units
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 - 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.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| unit1
interface
uses ...
var abc: Integer;
... |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| unit2
interface
uses Unit1; <<<<<<<<<<<<<<<<<<<<<<<<
implementation
<<< hier kannst du deine abc Variable nutzen. |
Delete - 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 - Sa 24.04.04 11:53
Hi, versuch doch einfach die Variabel in dem Public Bereich zu deklarieren...
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| private public test:string; end; |
Dann bracuhst du nir noch in der 2. Form zu sagen:
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
Maxi - 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 :-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!