Sommertv hat geschrieben:Vielleicht kann mir jemand erklären wie man EnableExplicit einsetzt und wofür man das braucht.
Man schreibt einfach
EnableExplicit an den Beginn seines Programms.
Diese Compilerdirektive hilft dabei Fehler zu vermeiden.
Die PureBasic-Hilfe hat geschrieben:EnableExplicit
DisableExplicit
Beschreibung
Aktiviert (EnableExplicit) oder deaktiviert (DisableExplicit) den Explizit-Modus. Wenn aktiviert, werden alle nicht ausdrücklich mittels Define, Global, Protected oder Static deklarierten Variablen nicht akzeptiert und der Compiler wird eine Fehlermeldung ausgeben. Dies kann helfen, Schreibfehler bei der Verwendung von Variablen auszumerzen.
Beispiel:
Code: Alles auswählen
EnableExplicit
Define a
a = 20 ; Ok, da mittels 'Define' deklariert
b = 10 ; Hier wird ein Fehler ausgegeben
Wenn du das in Deinem Code anwendest, wirst du feststellen, dass die Variable
DelFlag in Zeile 98 nicht definiert worden ist. Und wenn du das korrigiert hast, wirst du feststellen, dass da noch viele andere Variablen nicht definiert sind - vor allem in den Prozeduren. Schau dir dazu gern
Global und
Protected in der Hilfe an.
Ansonsten fällt mir auf, dass das Arrangement in deinem Code etwas verwirrend ist. Du hast z.B. deine Prozeduren alle unterhalb der Eventschleife liegen (und gehst auch sehr inflationär mit Leerzeilen um
).
Das kann man zwar so machen, aber ich finde es ungewöhnlich. Prozeduren habe ich in meinen Programmen immer oberhalb der Eventschleife liegen. Die Eventschleife ist ja quasi der Hauptloop in deinem Programm. Hier ist die Steuerzentrale von wo aus die einzelnen Prozeduren aufgerufen werden. Ich bin zwar kein gelernter Informatiker, aber ich würde behaupten, dass es in PureBasic "Usus" ist, die Eventschleife unterhalb der Prozeduren, wenn nicht sogar immer als letzten Teil des Sourcecodes zu platzieren. Außerdem hat das den Vorteil, dass du vermutlich nicht alle Prozeduren mit einem "Declare" deklarieren musst. Das musst du nur, wenn die Prozedur an einer Stelle aufgerufen wird, an der sie noch nicht implementiert worden ist. In deinem Fall trifft das auf alle Prozeduren zu, da sie alle erst hinter/unter deiner Eventschleife stehen.
Als ich neu war bei PB habe ich mir diese Dinge gern aus den Beispielen in der PureBasic Hilfe abgeschaut.
Ich kenne zwar nicht die Paradigmen und die Gepflogenheiten, die man in XBasic anwendet, aber du kannst davon ausgehen, dass man bei einem Wechsel der Programmiersprache an der ein oder anderen Stelle auch anders an ein Problem herangehen muss. Liebgewonnene Gewohnheiten könnten ggf. nicht mehr funktionieren und man muss sich evtl. mal kopftechnisch "resetten" und sich mit den Paradigmen und Lösungsansätzen der neuen Sprache mit Hilfe von kleinen Beispielen vertraut machen. In diesem Punkt finde ich die Hilfe von PureBasic und auch die mitgelieferten Beispielcodes sehr hilfreich. Das nur mal als Denksanstoss.
Ich vermute, dass das bei deinem Programm gerade ähnlich ist, da sich einige User über deine Herangehensweise wundern. Selbst habe ich dein Programm nicht weiter ausprobiert, da vermutlich der Teil mit dem RunProgram() auf meinem Windows System nicht laufen wird.
Gruß Kurzer