Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variablen, Prozeduren in mehreren Units (https://www.delphipraxis.net/185644-variablen-prozeduren-mehreren-units.html)

sephraina 26. Jun 2015 14:27

Delphi-Version: XE7

Variablen, Prozeduren in mehreren Units
 
Hallo zusammen,

Ich steh grad ziemlich an..., ist vielleicht auch eine dumme Frage...

Ich habe mehrere Units(Forms)
Im 1. Form/Unit definiere ich eine Variable die ich auch in Form/Unit3 brauche (in einer procedure) diese procedure will ich aber in Form 1 aufrufen.
Bisher habe ich halt immer die benötigten Units in der Uses-clausel bekannt gemacht und konnt so auf Variablen und proceduren zugreifen. Das geht hier ja nicht. Das Programm kompiliert ja nicht da es sich im Kreise dreht Unit1, Unit3, Unit1, Unit3 usw.

Wie muss ich das machen dass ich die procedure trotzdem verwenden kann?

Danke

Seph

mkinzler 26. Jun 2015 14:30

AW: Variablen, Prozeduren in mehreren Units
 
Auslagern in gemeinsam genutze Unit oder Einmbinden im Implementationsteil

Luckie 26. Jun 2015 15:42

AW: Variablen, Prozeduren in mehreren Units
 
Schlechtes Design würde ich sagen. Wenn man das ganze in Klassen packt, sollte sich das Problem von alleine lösen.

sephraina 26. Jun 2015 16:19

AW: Variablen, Prozeduren in mehreren Units
 
Danke für die schnelle Antwort,
hört sich einfacher an als es ist. An das Auslagern habe ich auch schon gedacht... nur:
Die Variable kommt aus Form1(Unit1) aus einem Edittext-Feld und wird via buttonclick gespeichert. Wird dann in Unit3 gebraucht damit in einer procedure eine serverabfrage gemacht werden kann die daten holt, die dann in dieser procedure eine combobox gefüllt werden wenn die procedure aufgerufen wird. die Combobox befindet sich in Form2.
Zu erwähnen: Form1 ruft Form2 auf, und kennt Unit3 (da sie ja die procedure auslöst), aber Unit3 soll Form1 kennen...

:?

die procedure in Unit1 zu implementieren ist blöd, da ich für diese procedure (und weitere) extra diese Unit 3 geschaffen habe.

sephraina 26. Jun 2015 16:22

AW: Variablen, Prozeduren in mehreren Units
 
@ Luckie: Deine Antwort erst grad gesehen...

Nun ich programmiere noch nicht so lange in Delphi, habe bis jetzt keine Klassen gebraucht...

(Vielleicht zu erwähnen, es handelt sich um eine App, die verschiedenen Forms sollen die Activities darstellen. (Ich dachte in Java hatte ich dieses Problem nicht -aber der Aufbau ist auch anders...))

Luckie 26. Jun 2015 16:36

AW: Variablen, Prozeduren in mehreren Units
 
Dann wäre das doch mal eine Gelegenheit sich damit zu beschäftigen. Dann kann man auch gleich den Code von der Oberfläche trennen.

Kralle 26. Jun 2015 16:39

AW: Variablen, Prozeduren in mehreren Units
 
Hallo,

Zitat:

Zitat von sephraina (Beitrag 1306717)
Wie muss ich das machen dass ich die procedure trotzdem verwenden kann?

Einfache Lösung: Datenmodul

Erzeuge ein Daten Modul (wie ein weiteres Formular, nur ohne Grafik)
Definiere dort eine Variable z.B. Zugangsdaten: string;

Binde das Datenmodul in allen Units mittels USES ein, in denen Du die Variable brauchst und schon kannst Du Deinen Wunsch realisieren.

Wie Du gelesen hast geibt es da auch noch andere Wege, aber da kann ich Dir nicht weiter helfen (mit denen ärgere ich mich auch noch rum).

Gruß Heiko

P.S. Kannst mal das hier lesen :
http://www.delphipraxis.net/178788-%...tenmoduls.html
http://www.delphipraxis.net/185113-x...ausloesen.html
http://www.delphipraxis.net/185021-u...versorgen.html
http://www.delphipraxis.net/184807-f...e-zugriff.html
http://www.delphipraxis.net/183539-%...ame-frame.html
http://www.delphipraxis.net/183510-v...-auslesen.html

hoika 26. Jun 2015 16:50

AW: Variablen, Prozeduren in mehreren Units
 
Hallo,

als Anfänger würde ich die gemeinsam genutzten Variablen z.B. X erst mal in das Main-Form ins public packen.
Das MainForm kann per uses in den Implementation-Teil der anderen Units rein und der Zugriff erfolgt über MainForm.X.
MainForm (oder Form1, wie auch immer das Form heisst) ist immer initialisiert, passt also.

Der nächste Schritt sind
- aus der Variable ein Property machen
- aus den Variablen eine Klasse, die im Public des Mainforms ist
- Klasse auslagert, Singleton usw.

Aber alles der Reihe nach.


Heiko

Perlsau 26. Jun 2015 16:51

AW: Variablen, Prozeduren in mehreren Units
 
Zitat:

Zitat von sephraina (Beitrag 1306717)
Wie muss ich das machen dass ich die procedure trotzdem verwenden kann?

Andere Möglichkeit: Du gestaltest deine Proceduren und Functionen so, daß die benötigten Daten als Parameter übergeben werden.
Noch andere Möglichkeit: Du verwendest Klassen, in denen du die benötigten Parameter als Properties zur Verfügung stellst.

Popov 26. Jun 2015 17:45

AW: Variablen, Prozeduren in mehreren Units
 
Hast du das so gemacht?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

{...}

implementation

{$R *.dfm}

uses
  Unit2;

end.
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

{...}

implementation

{$R *.dfm}

uses
  Unit1;

end.
Das sollte eigentlich keine Probleme bereiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.
Seite 1 von 2  1 2      

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