Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Prozeduren einer anderen Unit nutzen


Nagelbrett - So 18.05.03 03:20
Titel: Prozeduren einer anderen Unit nutzen
hi, ich hab in meinem programm ein zweites formular eingebaut, wofür ja dann eine neue Unit2 angelegt wird...

dummerweise kann ich innerhalb dieser unit weder meine funktionen/prozeduren aus Unit1 nutzen, noch scheint er die klassen von dort zu kennen...

da hilft auch ein "Uses Unit1" nichts... und wenn ich einfach Unit1. vor die prozeduren schreibe funktioniert's auch nicht

wie kann ich diese denn nun in der neuen unit nutzen?
die sache ist folgende... ich möchte gern aus der zweiten unit heraus einen globalen record der unit1 verändern, sodass es mir auch nichts bringen würde, alle klassen/variablen etc. in unit2 neu zu definieren :(

wie mach ich das also?


hansg - So 18.05.03 08:59

Hi, du mußt die procedure im Public Teil deklarieren


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }

  public
    Procedure Test ;

    { Public-Deklarationen }
  end;


den Aufruf in Form2 macht Du dann so:

Quelltext
1:
   form1.test;                    


MathiasH - So 18.05.03 09:35

ich weis ja nicht wie du das machen willst, aber ich definiere meine variablen und procedure nurnoch selten als teil eines formulars, sondern immer im var abschnitt der unit, zu dem Problem:
solange nur ein fenster auf das andere zugreifen soll ist es kein problem, aber wenn jedes fenster auf jedes andere zugreifen können soll wird es problematisch, denn dabei entstehen leicht Zirkelbezüge:


Quelltext
1:
2:
3:
unit1
...
uses unit2;




Quelltext
1:
2:
3:
unit2
...
uses unit1;


in diesem fall muss das zweite Fenster im 2. uses teil(nach implementation einfügen) auf das erste referenzieren, dadurch entsteht aber der nachteil, dass man objekte in unit2 nicht von denen in unit 1 ableiten kann, da sie ja noch nicht compiliert wurden. Dieses Probleme löse ich idr so, dass ich für meine zentralen funktionen/records, konstanten.... eine eigene unit(kein Formular!) anlege, die dann von allen anderen referenziert werden kann.

IO-sys/MathiasH


Nagelbrett - So 18.05.03 15:29

thx für die tips

prinzipiell funktioniert das jetzt, ich hatte nur einen sehr verwirrenden fehler mit einer der variablen gemacht, aber jetzt klappts :)