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()