Manchmal gibt es Compiler-Fallen, die echt böse sind. OK, es ist alles irgendwo dokumentiert, aber wer hat schon die komplette Doku im Kopf?
WWFixed ist ein cooler Datentyp, der das Berechnen mit Integerwerten (-32000 .. +32000) mit Nachkommastellen zulässt. Ich habe mich gewundert (soll heißen: stundenlang gesucht), dass
für negative sVal Werte (Datentyp sdword, - dword mit Vorzeichen) immer TRUE liefert und das Programm entsprechenden Unfug macht. Ist aber ganz logisch, weil MakeWWFixed() ein dword liefert. Das kennt keine negativen Zahlen und negative sVal-Werte haben das Bit 15 gesetzt, sind also immer größer als 360*65536 ....
Abhilfe:
Außerdem liefern die Anweisungen
verschiedene Werte . Im zweiten Fall wird die Zahl nämlich als Oktal-Zahl aufgefasst - 12okt ist aber 14dez. Von wegen, führende Nullen kann man beliebig hinzufügen.
Vielleicht erspare ich ja jemandem ein paar Stunden Sucharbeit.
Rainer