Global Procedure Include

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Global Procedure Include

Beitrag von TroaX »

GPI hat geschrieben:Das einzige Problem das ich da gerade sehe - es ist schon etwas umständlich...
Es ist sehr umständlich und ich würde den Quark auch garnicht mitmachen. Entweder gibt es ein zentrales gekapseltes Repo, wo kein Admin oder Mod nach irgendwelchen "Regeln" wie einen festen Programmierstil über veröffentlichen oder nicht veröffentlichen entscheidet oder ich persönlich werde es einfach nicht nutzen. Wenn ich seit Jahren nach einem eigenen Stil schreibe und dieser nicht mit den Regeln der "Master-Repo" konform ist, dann fange ich definitiv nicht damit an, meine Codes umzubasteln.Design follows functions. Entweder man frisst den funktionierenden Code oder lässte es bleiben oder wartet auf jemanden, der die gleiche Funktion in die gewüschten rosa Schleifchen packt.
computerfreak hat geschrieben:Dafür nicht nach 3 Tagen wieder offline :(
Das kommt natürlich ganz auf die Person an, die den Webspace stellt. Ich denke mal, das RSBasic da aber sehr zuverlässig sein dürfte (ich glaube er hatte es angeboten).

Ich halte Github auch für recht unübersichtlich. Dann können wir im Grunde auch gleich ein Forum nehmen.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Global Procedure Include

Beitrag von NicTheQuick »

Ich find's gut. Wird außerdem eh mal Zeit, dass die IDE ein neues GIT- und SVN-Werkzeug bekommt. Mag keiner schnell eins schreiben? :lol:
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Global Procedure Include

Beitrag von GPI »

Ach die PureArea ist auch nicht offline - nur hoffnungslos veraltet.

@TroaX
Die "Designrules" sollten schon allgemein gehalten sein. Ein Header ist nahezu unerlässlich, um die Übersicht zu behalten. Das sind nur ein paar Kommentarzeilen.
Das mit Compilerif #pb_compiler_ismaincode ist folgendermaßen gedacht: Die einzelnen Module/Proceduren soll man einfach per XIncludeFile einfügen können. Es empfiehlt sich aber immer ein Beispiel mitzugeben, wie man den Code am besten nutzen kann. Es gibt dann zwei Möglichkeiten: Entweder man macht zwei Dateien - einmal die IncludeDatei und einmal das Beispiel - oder man kombiniert beide. Dann klappt aber das mit dem Include nur, wenn es mit Compilerif automatisch entfernt wird.
Meinetwegen könnte man auch die Dateien in Englisch und Deutsch verfassen - ich kann beides ausreichend :) - nur bei Französisch setzt es halt aus. Und es ist nunmal so, das Englisch die Weltsprache ist und gerade beim Programmieren eh sehr viel nur in Englisch vorhanden ist. Deshalb sollte man halt Procedurennamen etc. in Englisch gehalten sein und nicht Französisch oder Deutsch. Das passt auch zum Syntax von PB, das auch nur englische Begriffe verwendet. Wenn mal ein deutscher Kommentar in Quellcode drin ist, wäre das nicht zwingend störend. Es sollte halt vermieden werden.

Wenn man aber einen Code einreicht und bspw. #pb_any konsequent ignoriert, sollte man damit rechnen, das einer den Code überarbeitet und das mit #pb_any löst. Ich würde auch rechnen, das irgendwer das ganze auf Module umschreibt, da die einfach flexibler sind. So kann man leichter mehrere verschiedene Include-Dateien einfügen, ohne auf irgendwas acht geben zu müssen.

Ohne Mods und Admins wird es aber auf keinen Fall gehen. Sonst wächst das Ding wie Kraut und Rüben und keiner kennt sich mehr aus und das ganze wird ziemlich nutzlos. Auch braucht es von einem Beispiel/Code nicht 10 Varianten, nur um jeden Programmierstiel gerecht zu werden. Hier müssen sich die Mods notfalls absprechen.

"Freie Liebe" klappt halt nur so lang, bis alle Frauen Schwanger sind oder sich die Geschlechtskrankheiten alle dahinraffen :)

Meine Sorge ist mehr, das der Anmeldungsprozess und Softwareinstallation schlicht zu kompliziert für viele sind....

@nic
Wenn das Zeug leichter verständlich wäre gerne ;)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Global Procedure Include

Beitrag von ts-soft »

Module sind schon mal gut, da hab ich auch gleich einen Vorschlag für.
Z.B. gemeinsame Constanten, damit diese immer zur Verfügung stehen. Also, diejenigen, die #PB_Any überflüssig machen.

Code: Alles auswählen

DeclareModule CommonConstants
  ; Form
  Enumeration FormWindow
  EndEnumeration
  Enumeration FormGadget
  EndEnumeration
  Enumeration FormMenu
  EndEnumeration
  Enumeration FormImage
  EndEnumeration
  ; Event
  Enumeration EventCustom #PB_Event_FirstCustomValue
  EndEnumeration
  Enumeration EventTypeCustom #PB_EventType_FirstCustomValue
  EndEnumeration
EndDeclareModule

Module CommonConstants
EndModule

UseModule CommonConstants
In jedem Modul einfügen und man kann Gadgets usw. mit Constanten numerieren:

Code: Alles auswählen

Enumeration FormGadget
  #MyModule_MyGadget
EndEnumeration
Allerdings von Änderungen an meinen Modulen halte ich nicht viel, die würde ich, wenn gut, selber vornehmen, weil die
Wünsche aller User blähen das evtl. nur auf oder sind nicht so passend. Ich denke mal, so werden die meisten denken.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Global Procedure Include

Beitrag von GPI »

Sowas wie Common-Module werden kaum gehen. Die einzelnen Codes/IncludeDateien sollen natürlich möglichst unabhängig von den anderen bleiben. Von daher wird es nichts mit einem globalen Common.

Aber die Grundidee ist von den ganzen doch, das man seinen Code der Community (blödes Wort) zur Verfügung stellt und diese ihn natürlich auch pflegen wird. Aber ich denke nicht, das jemand deinen Code nimmt und sie zur Weltformel aufbläht. Mit Fehlerkorrekturen und kleinen Erweiterungen muss man aber immer rechnen.

Eventuell sollten wir uns auch erstmal unterhalten, was das Ding darstellen soll.

Wäre auch nett, wenn ein paar andere sich noch zu Wort melden. Irgendwie komm ich mir gerade ein bischen wie ein Alleinunterhalter vor :)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Global Procedure Include

Beitrag von ts-soft »

GPI hat geschrieben:Sowas wie Common-Module werden kaum gehen. Die einzelnen Codes/IncludeDateien sollen natürlich möglichst unabhängig von den anderen bleiben. Von daher wird es nichts mit einem globalen Common.
Naja, dann wird es auch nichts ohne #PB_Any :mrgreen:

Ich habe auch schon div. Module gesehen, die auf z.B. #PB_Event_FirstCustomValue angewiesen sind, die muß man alle
händisch anpassen :freak:

Hierin habe ich eigentlich den einzigen Sinn gesehen. Ein paar grundsätzliche Regeln und auch Module, weil so kann ich meine
Module, so wie bisher veröffentlichen und brauche das ganze nicht.

Bin dann wieder raus. Von globalen Proceduren halte ich immer noch nichts.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Global Procedure Include

Beitrag von GPI »

ts-soft hat geschrieben:Naja, dann wird es auch nichts ohne #PB_Any :mrgreen:
Imo eh die bessere Lösung :)
Ich habe auch schon div. Module gesehen, die auf z.B. #PB_Event_FirstCustomValue angewiesen sind, die muß man alle
händisch anpassen :freak:
Wird man wohl nie 100% vermeiden lassen.

Wobei das ist ein Problem, das sich tatsächlich lösen lässt:

Code: Alles auswählen

CompilerIf Defined(common,#PB_Module) 
  CompilerIf  Defined(common::CustomEventList,#PB_Enumeration)
    Debug "gibt eine common-liste"
    Enumeration common::CustomEventList
  CompilerElse
    Debug "gibt common, aber keine Liste"
    Enumeration CustomEventList #PB_Event_FirstCustomValue
  CompilerEndIf
CompilerElse
  Debug "gibt kein common-modul"
  Enumeration CustomEventList #PB_Event_FirstCustomValue
CompilerEndIf
#myevent_blablabla
EndEnumeration
Ja, sieht auf den ersten Blick etwas unübersichtlich aus. Der Code überprüft, ob es ein Modul common gibt. Wenn ja, ob es eine Enumeration CustomEventList gibt. Wenn ja, wird sie weitergeführt, ansonsten eine neue erstellt (die leider dann nicht global ist). Ergebnis: Jeder kann sich ein Common-Modul schreiben, so das es sich automatisch erweitert. Das blöde ist, das Module einfach zu sehr schwarze Löcher sind.
Eventuell sollte man bei Fred anregen, das man sowas eigentlich überhaupt nicht mehr erlauben sollte, das man Events mit RegisterEvent() anmelden muss, ansonsten darf man sie nicht nutzen. Da wäre das Problem komplett aus der Welt geschafft.

Das ist halt so eine Sache, die ein Mod/Admin konsequent in die Codes reineditieren müsste.
Hierin habe ich eigentlich den einzigen Sinn gesehen. Ein paar grundsätzliche Regeln und auch Module, weil so kann ich meine
Module, so wie bisher veröffentlichen und brauche das ganze nicht.

Bin dann wieder raus. Von globalen Proceduren halte ich immer noch nichts.
Seh es dann als Codesammlung. Kennst du das CodeArchiv von PureArea? Ich suche heute immer noch gerne da mal nach Lösungen für meine Probleme. Nur leider wird das nicht mehr gepflegt und ist veraltet.
Mein persönliches Ziel wäre es halt, genau dieses zu ersetzen und auf eine moderne Basis zu setzen.

Oder schau doch mal ins Forum? Wieviele gute Codes versumpfen in Code, Tipps und Tricks? Die gepinnten Threads sind imo auch keine gute Lösung. Sowas muss man Katalogisieren und Sortieren. Dann kann man es gut nutzen. Das ist imo das Ziel.

Sämtliche Probleme zu lösen wird man natürlich nicht können. Einige lassen sich abfangen, wie das mit FirstCustomEvent. Dazu müsste man mal sammeln, was für Probleme es überhaupt gibt. Wo sowas zwingend gebraucht wird.

Es müssen ja nicht nur IncludeDateien sein, sondern auch Beispiele. Einfach Codebeispiele, wie man was lösen kann. Wie bspw. der AtomicWebserver, der in den Beispielen von PureBasic finden kann (und viele garantiert nicht gefunden haben :) - den könnte man auch mal auf aktuellen Stand bringen. Ich finde das Ding durchaus praktisch, um in eigenen Netzwerk eine einfache Steuerung von Programmen zu bieten. HTML-Browser hat jedes Smartphone. Niemand sagt, das man nur WebDateien übertragen muss. Wenn man "Datei" "xyz" per Web anfragt, dann kann man auch eine Funktion des Programms aufrufen.

Da steckt imo viel Potential drin. Einfach mal über den eigenen Schatten springen.
p.s.: Wie gesagt alleinunterhalter ....
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Global Procedure Include

Beitrag von ts-soft »

Ich hoffe mal, Du hast bemerkt, das meine CommonConstants lediglich eingebunden werden müssen, aber nicht gefüllt o. ä.
Die bleibt, wie sie ist. Lediglich die Namen der Enumeration sind in den Modulen zu übernehmen und pro Modul ein
UseModule CommonConstants.

Ich jedenfalls finde die Lösung Genial :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Global Procedure Include

Beitrag von GPI »

ts-soft hat geschrieben:Ich hoffe mal, Du hast bemerkt, das meine CommonConstants lediglich eingebunden werden müssen, aber nicht gefüllt o. ä.
Die bleibt, wie sie ist. Lediglich die Namen der Enumeration sind in den Modulen zu übernehmen und pro Modul ein
UseModule CommonConstants.

Ich jedenfalls finde die Lösung Genial :mrgreen:
Doch ist es. Ich hab halt das mit mit definied überprüft, ob es ein Common-Modul gibt und eine "Common"-Enumeration. So läuft das ganze halt mit einen common-module, aber auch ohne.

Wie gesagt, mein persönlicher Gedankengang ist, das alles so funktionieren sollte, ohne das man eine "common.pbi" includen muss. Ich würde eh empfehlen, wenn man was findet, das man die Datei in aktuellen Projektordner kopiert.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Global Procedure Include

Beitrag von RSBasic »

GPI hat geschrieben:Kennst du das CodeArchiv von PureArea? Ich suche heute immer noch gerne da mal nach Lösungen für meine Probleme. Nur leider wird das nicht mehr gepflegt und ist veraltet.
Mein persönliches Ziel wäre es halt, genau dieses zu ersetzen und auf eine moderne Basis zu setzen.
Diese Idee hatte ich auch, aber das war noch vor Einführung der Module. Da wollte ich grundsätzlich alle Codes einheitlicher gestalten, überall EnableExplicit einfügen, Variablen korrekt definieren, nicht funktionierende Codes verbessern u.ä.
Aber das Prüfen und Verbessern aller Codes des CodeArchivs ist bei 1.894 Beispielcodes sehr zeitaufwendig.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten