Module und globale Variablen aus dem Hauptprogramm

Für allgemeine Fragen zur Programmierung mit PureBasic.
Amor_2001
Beiträge: 75
Registriert: 14.12.2011 19:20

Module und globale Variablen aus dem Hauptprogramm

Beitrag von Amor_2001 »

Hallo,

ich komme gerade nicht ganz klar mit einem Modul.

Ich habe im Hauptprgramm eine globale Variable definiert (global smartcopy.i)
Auf diese habe ich auch aus allen enthaltenen Prozeduren Zugriff.
Nur leider habe ich noch ein Modul und wenn ich die Variable abfrage, ist sie stets 0, obwohl sie einen anderen Wert hat.
Nun meine Frage: Was muss ich tun (wo evtl. noch deklarieren), damit ich auch von meinem Modul aus auf diese globale Variable Zugriff habe.

Danke für dir Tipps schon mal.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von Nino »

Module können prinzipiell leider nicht auf Variablen (oder Prozeduren etc.) des Hauptprogramms zugreifen.

Wenn Du aber die Variable, auf die Du zugreifen möchtest, statt im Hauptprogramm in einem zweiten Modul deklarierst, dann kannst Du vom ersten Modul aus auf sie zugreifen. Leider geht's nicht anders.
Du kannst z.B. ein Modul Common anlegen, wo all die Dinge drin sind, auf die andere Module Zugriff haben sollen.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von STARGÅTE »

Im Grunde soll es ja auch garnicht möglich sein. Module sollen ja eigenständige unabhängere Programme sein, und eben nicht von andere Incldues/Variablen abhängig sein.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Amor_2001
Beiträge: 75
Registriert: 14.12.2011 19:20

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von Amor_2001 »

@STARGÅTE: Du hast vollkommen Recht.
Bei mir ist es so, dass ich im Hauptprogramm einen Wert aus einer Konfigurationsdatei einlese und dieser dann innerhalb des Moduls zu unterschiedlichen Schritten verzweigt.
Gibt es nicht noch einen Trick o.ä.?
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von Nino »

Amor_2001 hat geschrieben:Gibt es nicht noch einen Trick o.ä.?
Ja: den, den ich bereits genannt habe.
(Manche Leute fragen erst nach Hilfe und wollen dann keine annehmen.)
Zuletzt geändert von Nino am 28.01.2015 21:20, insgesamt 1-mal geändert.
Benutzeravatar
Sicro
Beiträge: 969
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von Sicro »

Wenn nur eine Procedure in deinem Modul den Wert aus der Konfigurationsdatei brauch, würde ich der Procedure einen weiteren Parameter für diesen Wert definieren. Brauchst du den Wert bei mehreren Procedures in deinem Modul, definierst du dort die globale Variable nochmal und erstellst eine "SetGlobalVariable(Value)"-Procedure, die du dann vor den anderen Procedures ausführst, oder du gehst auch hier wie im ersten Fall vor.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von ts-soft »

Um es nochmal Beispielhaft als Code zu tun:

Code: Alles auswählen

DeclareModule Common
  Global meine_globale_variable_die_auch_in_modulen_importiert_werden_kann.i
EndDeclareModule

Module Common
EndModule

UseModule Common
In allen Modulen nur UseModule Common einfügen, wo es genutzt werden soll,
und natürlich im MainScope.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von walbus »

:)
Zuletzt geändert von walbus am 07.02.2015 22:51, insgesamt 1-mal geändert.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von NicTheQuick »

walbus hat geschrieben:Es gibt einen Trick, da du im speziellen nach Trick´s fragst !

Über SetGadgetData, und GetGadgetData geht es...
Das macht in diesem Fall aber keinen Sinn.
walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: Module und globale Variablen aus dem Hauptprogramm

Beitrag von walbus »

:)
Zuletzt geändert von walbus am 07.02.2015 23:05, insgesamt 1-mal geändert.
Antworten