externe Procedure in ein Module verwenden
Re: externe Procedure in ein Module verwenden
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
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
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: externe Procedure in ein Module verwenden
Danke für die Erklärung.
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Re: externe Procedure in ein Module verwenden
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
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: externe Procedure in ein Module verwenden
Genau dafür ist eigentlich ein Forum da. Und nein, UseModule macht den Code nur sichtbar, er wiederholt ihn nicht.
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!
Re: externe Procedure in ein Module verwenden
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
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
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: externe Procedure in ein Module verwenden
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
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: externe Procedure in ein Module verwenden
Wobei das allerdings nicht für Standard Funktionen aus den Bibliotheken z.B. OpenFile gilt. Meiner Meinung nach dadurch nicht ganz zuende gedacht.
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Re: externe Procedure in ein Module verwenden
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
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
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: externe Procedure in ein Module verwenden
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.
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
Re: externe Procedure in ein Module verwenden
Nun, Reservierte FunctionsNamen sind in PureBasic nicht 'überschreibbar', so wie das in BlitzBasic z.B. möglich ist!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.
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
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic