| |
|
|
- Seite 1 - |
|
Dietmar Horn | Hallo,
ich grübele nun schon den dritten Abend über einen Programmteil, der im Interpretermodus einwandfrei funktioniert, aber compiliert nur Schrott ausspuckt.
Inzwischen konnte ich die fehlerhaft reagierende Stelle eingrenzen und mir die fehlerhaften Werte ausgeben lassen: KompilierenMarkierenSeparierenmessagebox(str$((gx0% + i% * ga% + i% * gb%)) + "
" + str$((gx0% + i% * ga% + (i% + 1) * gb%)),"",4160)
messagebox(str$((gx0% + i% * ga% + i% * gb%)) + "
" + str$((gx0% + i% * ga% + i% * gb% + gb%)),"",4160)
Im Interpretermodus -> richtige Werte: 10 und 36 Compiliert -> idiotische Werte: 10 und 8
Die Werte werden im Programm in einer Schleife mehrere hundert Mal mit unterschiedlichen Ausgangswerten berechnet. Die angegebenen Wertepaare sind die Werte des ersten Schleifendurchlaufes.
Vom Mathematischen her ist in diesem Programmteil alles in Ordnung (es geht um die Berechnung der Werte für ein Balkendiagramm). Im Interpretermodus wird das Diagramm auch korrekt dargestellt - compiliert wegen der falschen Werte aber eben leider nicht.
Kann jemand weiterhelfen?
Ich krieg sonst langsam noch ne Macke wegen der ständigen Unterschiede zwischen Interpreter- und Compilermodus.
Gruß Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 22.04.2005 ▲ |
|
|
|
|
| |
|
- Seite 1 - |
|
Dietmar Horn | Nee, Andreas,
ich habe nur wegen der Mathe-Logik beide Message-Boxen gepostet (beide liefern identische Werte).
Lediglich die beiden Formeln unterscheiden sich etwas (weil ich anfangs dachte, daß PRF mit Klammerung in Klammerung hier evtl. Probleme haben könnte).
Die Ausgangswerte sind ebenfalls richtig (bei jedem Schleifendurchlauf).
Ansonsten stehe ich mit Mathematik zum Glück nicht gerade auf Kriegsfuß. Daran dürfte es nicht liegen (vermute ich mal) ...
Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 22.04.2005 ▲ |
|
|
|
|
| Hallo Dietmar...
Trotzdem wäre es für mich ganz hilfreich die Werte für die Variablen und das dazugehörige falsche Ergebnis zu wissen. |
|
|
| |
|
|
|
| also ich erhalte im inter und im compi beide male die gleichen werte: KompilierenMarkierenSeparierendeclare gx0%,ga%,i%,gb%
i%=10
gx0%=5
gb%=7
messagebox(str$((gx0% + i% * ga% + i% * gb%)) + "
" + str$((gx0% + i% * ga% + (i% + 1) * gb%)),"",4160)
messagebox(str$((gx0% + i% * ga% + i% * gb%)) + "
" + str$((gx0% + i% * ga% + i% * gb% + gb%)),"",4160)
Vielleicht liegt es daran - das die variablen durch str$ verkehrt werden. ich erinnere da mal an die autom. typenconvertierung..
Salve. |
|
|
| |
|
|
|
GDL | Hi,
deine Messageboxen mit gleichen Zahlen von iF im Interpreter wie als exe immer 75.000000 und 82.000000 .
Servus Georg |
|
|
| |
|
|
|
Stephan Sonneborn | Hi, ich kann auch keinen Unterschied zwischen Interpreter und Exe feststellen. Auch dann nicht, wenn man ga% mit einem Wert belegt (bisher ist ga% = 0).
Dietmar, poste doch einfach mal die Werte für die Variablen, mit denen es nicht klappt. Werden evtl. Dezimalzahlen an Integervariablen übergeben und es entstehen beim Runden ungewollte Nebeneffekte? Obwohl mir allerdings der Unterschied schon recht groß erscheint... |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 23.04.2005 ▲ |
|
|
|
|
Dietmar Horn | Ja, langsam vermute ich auch, daß es irgendwie mit dieser blöden automatischen Typumwandlung an irgendeiner Stelle zusammenhängen könnte, und ich muß das wahrscheinlich nun von Anfang an nochmals alles auseinanderbröseln.
An Rundungsfehlern dürfte es nicht liegen, denn dann sollte es doch keine Unterschiede zwischen Interpreter und Compiler geben. Ein paar Mal habe ich bereits erlebt, daß Profan Probleme mit der Mathematik hat, aber man kann doch nicht alle Formeln in der Art auseinandernehmen (stark vereinfacht dargestellt):
statt: x = (a + b) - (c - d)
schreibe:
u = a + b v = c - d
x = u - v
Interessant wird diese Vorgehensweise, wenn dann auch noch trigonometrische Funktionen, Potenzen und Logarithmen hinzukommen ...
Heute und morgen komme ich wahrscheinlich nicht gleich dazu, aber ich werde es posten, wenn ich den Übeltäter eingefangen habe oder zumindest weiter einkreisen konnte. Oder den Mathe-Berechnungsteil notfalls in Delphi schreiben und die Ergebnisse dem Profan-Programm zur Weiterbearbeitung übergeben ...
Mich stört in erster Linie, daß es öfters mal diese blöden Unterschiede zwischen Interpreter und Compiler gibt, weil man das selber beim Programmieren kaum beeinflussen kann. Wenn das einheitlich wäre (notfalls eben auch gleiche Bugs bei Beiden), dann könnte man sich ja danach richten, aber so ...
Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 23.04.2005 ▲ |
|
|
|
|
CB | Ich habe mir angewöhnt, sämtliche Klammern zu setzen, auch wenns aus mathematischen Prinzipien nicht notwendig wäre - aber wer weiß? Damit erzwinge ich ggf. ein korrektes Vorgehen - hoffentlich ...
Christian |
|
|
| |
|
|
|
| Aus dem Grund arbeite ich überhaupt nicht mit dem Interpreter - sondern immer nur mit der fertigen Exe.
Deshalb steht bei mir oben im Source auch immer {$cleq}
Am Ende spart man Zeit. :/:
Salve. |
|
|
| |
|
|
|
Dietmar Horn | Hallo,
ich habe endlich meinen Fehler gefunden.
Statt
ga% = 3
hatte ich versehentlich
ga% = 3%
getippelt.
Komisch, daß weder Interpreter noch Compiler das angemeckert haben und vor allem, daß die Sache im Interpreter sogar korrekt funktionierte.
Ich danke trozdem allen, die mir versucht haben zu helfen.
Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 23.04.2005 ▲ |
|
|
|
|
| Hallo Dietmar...
Mir ist vor vor einigen Jahren was ganz ähnliches passiert - auch hier meckerte der Interpreter nicht und die EXE gab falsche Werte. Das Programm hatte ca. 10000 Zeile und ich habe tagelang nach dem Mist gesucht, der da passiert... |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
CB | In so einem Fall beschwert sich Profan nicht - da 3% nicht existiert ist ga% halt 0 und schon fällts nimmer auf, daß 3% nicht deklariert (weil falsch) ist. Es lebe die Variablenüberprüfung vom XPSE, wenn sie auch solche fehlenden Deklarationen findet. iF wirds schon hinkriegen!
Christian |
|
|
| |
|
|
|
| Ich habs mit in die ToCheckToDo vom XPSE gepackt.
So isses ja gedacht - xpse soll sich ja stetig weiterentwickeln und immer strenger werden.
Salve. |
|
|
| |
|
|