Public Procedure im Modul aufrufen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

Public Procedure im Modul aufrufen

Beitrag 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 ?
---
Windows 11 (64 bit)
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Re: Public Procedure im Modul aufrufen

Beitrag 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
(\/) (°,,,°) (\/)
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Public Procedure im Modul aufrufen

Beitrag 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()
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten