Seite 1 von 3
externe Procedure in ein Module verwenden
Verfasst: 20.05.2021 11:57
von marcelx
Hallo,
wie kann ich subM in der module modx verwenden ?
Oder ein Procedure aus ein IncludeFile
Code: Alles auswählen
DeclareModule modX
Declare CreateFerrari()
EndDeclareModule
Module modX
Procedure CreateFerrari()
Debug "CreateFerrari()"
subM("modx") ; Geht nicht
EndProcedure
EndModule
UseModule modX
Procedure SubM(x.s)
Debug "Sub:"+x
EndProcedure
subM("Main")
CreateFerrari()
EDIT:
aus PB-Hilfe: "Auf Elemente aus dem Hauptcode wie Prozeduren, Variablen, etc. kann innerhalb des Moduls nicht zugegriffen werden, auch wenn sie als global deklariert wurden."
Wie ich es sehe muss ich die extern Procedure in ein Modul packen
Re: externe Procedure in ein Module verwenden
Verfasst: 20.05.2021 14:58
von Olafmagne
Hallo,
Ja,
ein Module als "Schnittstelle"
im Declare-Teil die besagte Procedure declarieren,und im Module-Teil der 'modx' ein UseModule und schon ist die Procedure nutzbar.
Wenn die Procedure auch im Haupt-Programm genutzt werden soll,dann auch ein UseModule imHaupt-Code.
Geht natürlich auch mit "ModuleName::Proc", Wie du willst.
Olaf
Re: externe Procedure in ein Module verwenden
Verfasst: 20.05.2021 22:57
von Bisonte
Teilweise richtig. So wie MarcelX es beschreibt geht das geht schlichtweg gar nicht !
Module können nur Prozeduren aus vorher definierten Modulen verwenden.
Also schreibe ein Modul, in dem deine "Procedure SubM()" vorhanden ist und rufe sie entweder per Usemodule oder direkt mit Modulname::SubM() auf.
Re: externe Procedure in ein Module verwenden
Verfasst: 21.05.2021 03:53
von Olafmagne
Bisonte hat geschrieben: 20.05.2021 22:57
Teilweise richtig. So wie MarcelX es beschreibt geht das geht schlichtweg gar nicht !
Module können nur Prozeduren aus vorher definierten Modulen verwenden.
Also schreibe ein Modul, in dem deine "Procedure SubM()" vorhanden ist und rufe sie entweder per Usemodule oder direkt mit Modulname::SubM() auf.
Öhm-
Das meinte ich doch, hab mich auf seine Aussage, ein weiteres Module zu nutzen, bezogen.
marcelx hat geschrieben:
EDIT:
aus PB-Hilfe: "Auf Elemente aus dem Hauptcode wie Prozeduren, Variablen, etc. kann innerhalb des Moduls nicht zugegriffen werden, auch wenn sie als global deklariert wurden."
Wie ich es sehe muss ich die extern Procedure in ein Modul packen
Eben ein Module definieren, besagte Function öffentlich declarieren, und in seiner(schon vorhandenen xmod-Module) einbinden.
Nunja, vielleicht etwas 'unglücklich' Ausgedrückt.

Re: externe Procedure in ein Module verwenden
Verfasst: 21.05.2021 15:47
von mk-soft
Wenn man Funktionen, Variablen, Konstanten, etc Global und in Modulen benötigt, ein Modul Common erstellen und mit UseModule Common in MainScope und in Modulen aktivieren.
Re: externe Procedure in ein Module verwenden
Verfasst: 21.05.2021 15:56
von helpy
... oder komplett auf den Mainscope verzichten

und ausschließlich mit Modulen arbeiten:
Code: Alles auswählen
DeclareModule Application
EnableExplicit
EndDeclareModule
Module Application
Procedure MAIN()
; and here the main program
EndProcedure
End MAIN()
EndModule
Re: externe Procedure in ein Module verwenden
Verfasst: 28.05.2021 11:21
von Axolotl
Hat das Module Konzept eigentlich Auswirkungen auf Programmeigenschaften wie bspw. Programgröße oder Programmausführungsgeschwindigkeit?
Re: externe Procedure in ein Module verwenden
Verfasst: 28.05.2021 11:23
von GPI
Ich wüsste nicht wieso sie das haben sollte.
Statt Modulen könntest du auch mit prefixen arbeiten.
also statt "modul::variablename" könntest du überall "modul_variablename" schreiben und stark vereinfacht macht der Compiler genau sowas.
Re: externe Procedure in ein Module verwenden
Verfasst: 28.05.2021 13:43
von Olafmagne
GPI hat geschrieben: 28.05.2021 11:23
Ich wüsste nicht wieso sie das haben sollte.
Statt Modulen könntest du auch mit prefixen arbeiten.
also statt "modul::variablename" könntest du überall "modul_variablename" schreiben und stark vereinfacht macht der Compiler genau sowas.
Dann ist aber keine Kapselung von Variablen und Proceduren mehr gegeben!
Der Vorteil von Modulen sehe ich in erster Linie darin, dass man nur das "sieht", was im DeclareModule-Teil declariert ist!
dadurch kann ich ein "
Object erstellen, ohne alles im Main-Code zu definieren.
ist zwar kein OOP, aber das GrundPrincipe ist zu erkennen.
Einmal geschrieben,ist es immer wiederverwendbar
Re: externe Procedure in ein Module verwenden
Verfasst: 28.05.2021 16:41
von Axolotl
Sorry, ich wollte keine Diskussion über Module lostreten. Ich nutze die Möglichkeit von 'Module' nicht.
Hatte gedacht, dass sich bei wiederholtem "UseModule" in allen weiteren Modulen der Code vervielfältigt.