Der PureBasic code wird ja zuerst in ASM Code umgewandelt und dann wird er compilliert. Die Fehlermeldung ist von FASM. In FASM gibts For : Next allerhöchstens als macro.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Der PB-Compiler sollte trotzdem einen Syntax Error werfen, da im to-Teil der Schleife kein Gleichheitszeichen erlaubt ist. Das macht er aber nie, auch nicht bei z.B. PeekL(12=8 ).
Naja, also das ist wohl eine der Dinge, die Fred zuletzt beheben sollte, denn es ist ja kein wirklich großes Problem. Macht es denn wirklich soviel aus die Hilfe nach For : Next aufzuschlagen?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Ich hatte die Schleifen ja teilweise richtig. Das ist einfach ein Leichtssinnsfehler den man nur schwierig wieder findet.
Ist es wirklich ein so großes Problem die Fehlermeldung zu ändern?
Bei anderen Gelegenheiten gibts ja auch verständliche Hinweise.
bluejoke hat geschrieben:Ich hatte die Schleifen ja teilweise richtig. Das ist einfach ein Leichtssinnsfehler den man nur schwierig wieder findet.
Ist es wirklich ein so großes Problem die Fehlermeldung zu ändern?
Bei anderen Gelegenheiten gibts ja auch verständliche Hinweise.
Ja, denn es ist eine FASM Fehlermeldung und keine PB Interne. Also wende dich an die Hersteller von FASM, dass die eine neue speziell für dich angepasste PureBasic FASM version erstellen :P .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Ne DarkDragon
PureBasic sollte diesen Fehler vorher abfangen oder diesen Vergleich "i.l = 7" richtig auswerten.
Es ist ja nichtmal unbedingt ein Syntaxfehler...
Es kommt aber nur deswegen zu einer FASM-Fehlermeldung, da PB diesen Fehler nicht abfängt. Es hätte sogar sein können, dass nichtmal ein FASM-Fehler auftaucht, sondern das Programm einfach nur seltsam funktioniert.
Fred müßte seinen Syntax-Check erweitern, was etwas komplizierter sein könnte. Vorteil wäre, dass dann auch Ausdrücke, wie 5 = 2 > 8 abgefangen werden könnten. Da das in PB kein sinnvoller Ausdruck ist, sollte er meiner Meinung nach abgefangen werden.
Ist mir aber auch nicht soo wichtig.
P.S.: Whoops, da war remi schneller.
Was mir wegen remis Post aber noch einfällt (die Diskussion gabs aber schonmal):
Wenn ein boolescher Ausdruck 0 oder 1 zurückgäbe, wäre das sehr cool, dann wäre nach
a = 7 > 3 zum Beispiel a = 1.
Nee, das ist manchmal Zufall, dass das klappt. Scheint nur mit Konstanten zu klappen. Wahrscheinlich wird deren Wert einfach zur Compilezeit ausgerechnet. Aber insbesondere geht es nicht mit Variablen: