Seite 2 von 3

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 21:58
von NicTheQuick
Bloß wäre dazu erst mal ein Gadget und damit ein Window notwendig und das Modul müsste auch noch wissen von welches Gadget es die Daten auslesen soll. Quasi ein Henne-Ei-Problem.

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 22:05
von walbus
:)

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 22:07
von STARGÅTE
Man könnte zB mit Set/GetEnvironmentVariable() arbeiten, wobei hier die Gefahr besteht, dass man ein Namenskonfikt hat.

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 22:08
von walbus
:)

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 22:29
von Nino
Was Ihr hier mit Gadgets und Umgebungsvariablen vorschlagt, ist unnötig umständlich. Außerdem untergräbt es den Sinn von Modulen.

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 22:48
von walbus
:)

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 28.01.2015 22:51
von Nino
Ach so, dann hatte ich das falsch verstanden. Sorry, dass ich "Vorschlag" geeschrieben habe.

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 29.01.2015 00:29
von walbus
:)

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 29.01.2015 01:06
von helpy
Amor_2001 hat geschrieben:@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.ä.?
Ich würde grundsätzlich Module so schreiben, dass Sie nicht auf Daten im Hauptprogramm zugreifen müssen.
Vor der Verwendung der Hauptfunktionen des Moduls kannst Du den Konfigurationswert einfach an das Modul übergeben.
Eine Möglichkeit, das umzusetzen:

Code: Alles auswählen

;- Modul MyModule
DeclareModule MyModule
	EnableExplicit
	
	Global configSmartCopy.i
	
	Declare AnyFunction()
	;...
EndDeclareModule

Module MyModule
	EnableExplicit
	
	Procedure AnyFunction()
		Select configSmartCopy
			Case 1
			Case 2
			Default
		EndSelect
	EndProcedure
	;...
EndModule


;- Hauptprogramm
Global smartcopy.i

; Konfigurationswert einlesen
smartcopy = ReadConfigValueSmartCopy()

MyModule::configSmartCopy = smartcopy
MyModule::AnyFunction()

;...

End
Damit bleibt das Modul in sich gekapselt. Was das Modul für eine ordnungsgemäße Funktion brauchte, sollte man diesem auch auf die eine oder andere Art übergeben.
Das ist für mich der logischere Weg und in meinen Augen die sauberste Lösung.

Den Weg über ein Commom-Modul finde ich persönlich nicht so gut (wenn es sich vermeiden lässt).

cu,
guido

Re: Module und globale Variablen aus dem Hauptprogramm

Verfasst: 29.01.2015 01:23
von walbus
:)