externe Procedure in ein Module verwenden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: externe Procedure in ein Module verwenden

Beitrag von Olafmagne »

Kein Problem.

Und nein, das Modul ist ja im Haupt-Code, d.h. entweder direct im HC geschrieben oder Includiert, und damit ähnlich proceduren
Die Functionen werden Ja intern über Ihre Adresse aufgerufen, so das eine CodeVervielfälltigung unnötig ist
Das UseModul ist nötig, um auf "Öffentliche" Proceduren zuzugrifen( oder mit ModulName::Procedure)

des heisst ein UseModul in einem anderen module macht die nutzung für das 'andere' module möglich,
ohne das es im HC zu sehen ist!
das module ist also nur in dem module( und das HauptProgramm ist auch ein 'Module') zu sehen,in dem UseModule steht
Vorteil des Ganzen ist Capselung von Variablen, und auch von functionen

Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: externe Procedure in ein Module verwenden

Beitrag von Axolotl »

Danke für die Erklärung. :allright:
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: externe Procedure in ein Module verwenden

Beitrag von Olafmagne »

Avec plaisir
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: externe Procedure in ein Module verwenden

Beitrag von GPI »

Axolotl hat geschrieben: 28.05.2021 16:41 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.
Genau dafür ist eigentlich ein Forum da. Und nein, UseModule macht den Code nur sichtbar, er wiederholt ihn nicht.
Olafmagne hat geschrieben: 28.05.2021 13:43 Dann ist aber keine Kapselung von Variablen und Proceduren mehr gegeben!
Wenn du konsequent die Prefixes überall nutzt, sind die Variablen und Proceduren recht gut abgekapselt, wenn auch nicht mehr durch den Compiler unterstützt. Sowas macht man bspw. in C. Darum findest du bei sämtlichen Bibliotheken in C (wie SDL oder OpenGL) immer die Prefixe. Bei OpenGL beginnt alles mit GL, eben aus diesen Grund.
Man kann sogar "Private" so deklarieren, bspw. indem man sie immer mit _ beginnen lässt. Wobei das in C eher ungünstig ist, weil Unterstriche Compiler-Sachen sind, die man nicht nutzen darf, da nimmt man den unterstrich eher am Ende. Klar man könnte das als Programmierer ignorieren, aber dann ist man selbst Schuld, wenn in der nächsten Revision der Bibliothek der Code nicht mehr funktioniert.
Und auch selbst bei abgesicherten Sachen könnte ein Programmierer gewaltsam einbrechen und den Code ändern um was wieder öffentlich zu machen. Gegen schlimmen Code hilft nur Diziplin
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: externe Procedure in ein Module verwenden

Beitrag von Olafmagne »

Nun, grundsätzlich stimme ich dir zu,
aber es kann dazu verleiten, variablen einen Wert zuzuweisen(zB zum Test), ohne eine SetterProcedure
und dann zu vergessen, es wieder zu entfernen.
Eine mehrfaches nutzen des gleichen Namens ist dann auch 'gefährlich', da ein falsches Prefix hier nicht
vom kompiler erkannt wird, wenn es trotzdem exestiert
Ist meine persönliche Meinung, ich nutze Module immer mehr,
weil es einfach auch bequemer ist.

Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: externe Procedure in ein Module verwenden

Beitrag von mk-soft »

Und es gibt keine Konflikte mit globalen Variablen und Funktionen die innerhalb des Modules definiert sind. :)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: externe Procedure in ein Module verwenden

Beitrag von Axolotl »

Wobei das allerdings nicht für Standard Funktionen aus den Bibliotheken z.B. OpenFile gilt. Meiner Meinung nach dadurch nicht ganz zuende gedacht. :oops:
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: externe Procedure in ein Module verwenden

Beitrag von Olafmagne »

Verstehe ich jetzt nicht?
Solche StandartFunctionen werden doch nicht nochmal definiert?
Im Module werden sowieso(bei mir jedenfalls) alles in eigene proceduren verpackt,so
dass eine Standartfunction nicht z.B. OpenFile, eine falsche Datei öffnen kann.
in meiner eigenen Function definiere ich ja, was diese können soll.

Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: externe Procedure in ein Module verwenden

Beitrag von Axolotl »

Okay, ich versuche noch mal.
Wenn man Module als Nameserver versteht, dann sollte man auch eigene Funktionen mit beliebigen Namen erstellen können. Da aber die bestehenden Funktionen keinen eigenen Namespace haben, können diese Namen nicht verwendet werden. Problem ist vermutlich die Kompatibilität zu bestehenden älteren Programmen.
Aber ich beschwere mich nicht, die Verwendung von Module ist ja optional.
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benutzeravatar
Olafmagne
Beiträge: 130
Registriert: 07.12.2017 17:30
Wohnort: Sete/Frankreich

Re: externe Procedure in ein Module verwenden

Beitrag von Olafmagne »

Axolotl hat geschrieben: Okay, ich versuche noch mal.
Wenn man Module als Nameserver versteht, dann sollte man auch eigene Funktionen mit beliebigen Namen erstellen können. Da aber die bestehenden Funktionen keinen eigenen Namespace haben, können diese Namen nicht verwendet werden. Problem ist vermutlich die Kompatibilität zu bestehenden älteren Programmen.
Aber ich beschwere mich nicht, die Verwendung von Module ist ja optional.
Nun, Reservierte FunctionsNamen sind in PureBasic nicht 'überschreibbar', so wie das in BlitzBasic z.B. möglich ist!
Das überschreiben ist auch Problematisch,weil dann jemand ein Module schreibt,"WaitWindowEvent" überschreibt, und Du als Nutzer stehst da mit einer Function,die nicht so ist,als wie sie sollte
Da geht nur Pre/Post-Fix,OK, Aber alle Selbsdefinierten sind ja nur in dem Modul sichtbar,in dem Sie declariert sind
es sei den,Sie stehen im Declare-teil(logisch)

Wenn ich ein Module 'SpriteManager" habe ,nun, dann habe öffentliche Proceduren das Pre-Fix SP_.
InterneProceduren sind ja im 'Namespace'.

Allerdings wäre es manchmal wünschenswert, Wie in Delphi z.B., ein Module mit 'UseNameSpace' einzubinden,wobei dem Modul ein Pre-Fix zugewiesen wird

Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Antworten