AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Variablen, Prozeduren in mehreren Units

Ein Thema von sephraina · begonnen am 26. Jun 2015 · letzter Beitrag vom 27. Jun 2015
Antwort Antwort
Seite 1 von 2  1 2   
sephraina

Registriert seit: 17. Feb 2015
36 Beiträge
 
Delphi XE7 Professional
 
#1

Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 14:27
Delphi-Version: XE7
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 14:30
Auslagern in gemeinsam genutze Unit oder Einmbinden im Implementationsteil
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 15:42
Schlechtes Design würde ich sagen. Wenn man das ganze in Klassen packt, sollte sich das Problem von alleine lösen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
sephraina

Registriert seit: 17. Feb 2015
36 Beiträge
 
Delphi XE7 Professional
 
#4

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 16:19
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.
  Mit Zitat antworten Zitat
sephraina

Registriert seit: 17. Feb 2015
36 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 16:22
@ 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...))
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 16:36
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#7

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 16:39
Hallo,

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
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),

Geändert von Kralle (26. Jun 2015 um 16:50 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.102 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 16:50
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
Heiko
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 16:51
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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Variablen, Prozeduren in mehreren Units

  Alt 26. Jun 2015, 17:45
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf