Zugriff auf Main von innerhalb eines Moduls

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Zugriff auf Main von innerhalb eines Moduls

Beitrag von Sicro »

Deine Anforderungen sind mir bekannt, aber nachdem ich das gelesen habe, dachte ich, du hast deine Anforderungen etwas gelockert:
Kurzer hat geschrieben:Die Sache mit der Konstantendefinition per Macro werde ich so machen, auch das ist sehr sinnvoll.
In dem Fall war es sehr naheliegend gleich UseModule zu verwenden.


Die Variante von @Nino gefällt dir auch nicht?
Nino hat geschrieben:Du kannst auch die betr. Konstanten in eine Include-Datei schreiben, und diese Datei dann 2x "includieren": Einmal innerhalb des Moduls und einmal außerhalb.
Was hältst du davon, auf das Modul zu verzichten? Anscheinend verwendest du ein Modul nur, um ein Präfix bei deinen Proceduren-Namen zu haben und willst die eigentliche Funktionalität von Modulen gar nicht (Abkaspselung von anderen Codes).

Code: Alles auswählen

Enumeration DataModesEnum
  #GG_DATAMODE_INTEGER
  #GG_DATAMODE_FLOAT
EndEnumeration

Procedure GraphGadget_Draw(*handle, dataMode)
  Select dataMode
    Case #GG_DATAMODE_INTEGER
    case #GG_DATAMODE_FLOAT
  EndSelect
EndProcedure

Procedure GraphGadget_Whatever()
  ; ...
EndProcedure
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: Zugriff auf Main von innerhalb eines Moduls

Beitrag von #NULL »

Vielleicht auch einfach die Namensgebung anpassen (GG_DATAMODE::#INTEGER) um weinger tippsen zu müssen:

Code: Alles auswählen

DeclareModule GG_DATAMODE
  Enumeration
    #INTEGER
    #FLOAT
  EndEnumeration
EndDeclareModule
Module GG_DATAMODE
EndModule

DeclareModule TEST
EndDeclareModule
Module TEST
  Debug GG_DATAMODE::#INTEGER
  Debug GG_DATAMODE::#FLOAT
EndModule

Debug GG_DATAMODE::#INTEGER
Debug GG_DATAMODE::#FLOAT
Die Namen deiner Konstanten kollidieren dann aber leichter mit bereits vorhanden (obwohl Module ja so toll gekapselt sind :roll: )
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Zugriff auf Main von innerhalb eines Moduls

Beitrag von Kurzer »

Halt Stop... :D Wir müssen da keine Raketenwissenschaft oder einen Contest daraus machen. :wink:

Wie gesagt, das sind alles gute Vorschläge die auch funktionieren, aber ich hatte einfach nur eine einfache Frage gestellt, die mittlerweile beantwortet ist (Zuriff auf Konstanten des Mainscopes nach vorgegebener Methode).

Ich werde meinen eigenen workflow oder meine Paradigmen sicherlich nicht komplett umkrempeln, wenn ich genau so gut die zwei Konstanten doppelt deklarieren und dann wie gehabt weiter programmieren kann.

Kurz noch auf eure posts eingegangen...
kurzer hat geschrieben:Die Sache mit der Konstantendefinition per Macro werde ich so machen, auch das ist sehr sinnvoll.
In dem Fall war es sehr naheliegend gleich UseModule zu verwenden.
Das mit dem Macro hätte ich gemacht, wenn es ohne UseModule gegangen wäre. Warum? Weil ich's geil gefunden hätte. :wink:
Die Variante von @Nino gefällt dir auch nicht?
Nino hat geschrieben:Du kannst auch die betr. Konstanten in eine Include-Datei schreiben, und diese Datei dann 2x "includieren": Einmal innerhalb des Moduls und einmal außerhalb.
Nö, passt nicht in mein Schema. Das ganze wird ein Customgadget, daher die Kapselung in einem Modul. Ich möchte nicht mit zwei Dateien (Gadget-Modul und Konstanten-Modul) herumhantieren, sondern einfach die "mod_CustomGadget.pbi" includen und fertig. Und wenn man es denn ohne UseModule nutzen möchte und dabei auch sofort die betreffenden Konstanten per Autovervollständigung nutzen kann, dann finde ich das sogar richtig geil.
Was hältst du davon, auf das Modul zu verzichten? Anscheinend verwendest du ein Modul nur, um ein Präfix bei deinen Proceduren-Namen zu haben und willst die eigentliche Funktionalität von Modulen gar nicht (Abkaspselung von anderen Codes).
Doch doch, genau das will ich. :D
Vielleicht auch einfach die Namensgebung anpassen (GG_DATAMODE::#INTEGER) um weinger tippsen zu müssen:
Ähh wow, abgefahren. :lol: Das wäre quasi die "LSD-Version". :wink:

Aber mal ganz ehrlich. Ein tolles Forum! Bzgl. Hilfe wird hier wirklich schnell und kompetent reagiert. Danke. Falls ich in diesem Fall aber ein bisschen "contra" rüberkomme, weil ich so gar nicht auf Eure ganzen Vorschläge eingehe, dann hat das nichts mit fehlender Anerkennung o.ä zu tun. Einfach nur damit, dass ich mich bereits für eine Lösungen entschieden habe und diese nutze.

In diesem Sinne, besten Dank... und weitermachen. :allright:
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Antworten