Seite 1 von 1
Public Procedure im Modul aufrufen
Verfasst: 06.09.2013 15:49
von Makke
Hallo zusammen,
eine Frage zu den Modulen habe ich, ist es möglich eine (public) Procedure aus einem Modul aufzurufen ? Beispiel:
Code: Alles auswählen
EnableExplicit
Procedure Write()
Debug "Procedure Write()"
EndProcedure
DeclareModule Test1
Declare t1()
Declare t2()
EndDeclareModule
Module Test1
Procedure t1()
Debug "Module::Test1::t1()"
EndProcedure
Procedure t2()
Write()
EndProcedure
EndModule
Test1::t1()
Test1::t2()
So geht es auf alle Fälle nicht. Gibt es eine Möglichkeit oder soll das so sein das es nicht möglich ist ?
Re: Public Procedure im Modul aufrufen
Verfasst: 06.09.2013 16:12
von KeyKon
Also keine Ahnung obs geht oder nicht, aber es würde meiner Meinung nach das Modul-Prinzip absolut ad absurdum führen.
Module sind ja nicht nur da um was abzuschotten sondern auch um simpel wiederverwendbare Programmteile zu erstellen, da wäre es ja ziemlich sinnfrei wenn die auf im Hauptprogramm anzulegende Prozeduren angewiesen sind...
LG KeyKon
Re: Public Procedure im Modul aufrufen
Verfasst: 06.09.2013 18:14
von hjbremer
Module sollten eigenständige Routinen enthalten zwecks Kapselung
Dennoch muß ein Modul mit dem Hauptprogramm kommunizieren
Beispiel: Modul enthält allgemein gehaltene Eingaberoutinen.
Diese Eingaben müssen nun überprüft werden.
hier ein sehr allgemein gehaltenes Beispiel.
Vielleicht ist es das was du suchst
Code: Alles auswählen
EnableExplicit
DeclareModule Test1
Declare t1()
Declare start(pointer,x,y,z)
EndDeclareModule
Module Test1
Structure mymodulvariablen
x.i
y.i
z.i
pointer.i
EndStructure
Global mv.mymodulvariablen
Prototype check(nr, item, subitem, old$, new$)
Global check.check
Procedure start(pointer,x,y,z)
mv\pointer = pointer
mv\x = x
;usw
;
;Code zum initialisieren von Gadgets und füllen der internen Structur etc...
EndProcedure
Procedure t1()
;Prozedur t1 macht irgendwas
;und ruft dann die externe Prozedur Check auf
If mv\pointer
check = mv\pointer
check(3, 5, 6, "oldtext", "newtext")
EndIf
EndProcedure
EndModule
Procedure inputcheck(nr, item, subitem, old$, new$)
Debug "Procedure inputcheck überprüft Eingaben: "
EndProcedure
Test1::start(@inputcheck(), 1,2,3)
Test1::t1()