![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Markus! > Als ich allerdings das Programm um 2 weitere LCD Ausgaben erweiterte, trat wieder der zuvor beschriebene Effekt auf. Ich habe den von Dir beschriebenen Effekt jetzt reproduzieren und den Grund dafür ausfindig machen können. Es liegt daran, daß der OCBASIC-Compiler Stringkonstanten unterstützt, die ein oder zwei Zeichen lang sein dürfen: DEFINE a BYTE DEFINE b WORD a="A" 'entspricht a=ASC("A") b="01" 'entspricht b=CVI("01") In Deinem Beispiel interpretiert der Compiler "M:" als 16-Bit-Stringkonstante. Da er in diesem Fall byteorientiert arbeitet, wird das obere Byte abgeschnitten und es bleibt ein ":" übrig. Um das Problem zu beheben, werde ich wahrscheinlich Stringkonstanten in der nächsten Version des Compilers herausnehmen müssen. Dumm ist dann nur, daß bestehende OCBASIC-Programme, die Stringkonstanten verwenden, nicht mehr übersetzt werden können. :-( Bis dahin sollten bei INLINE alle Strings, die genau zwei Zeichen lang sind, vermieden werden. Ebenso verhält es sich mit zwei Zeichen langen Strings in Tabellen. Viele Grüße Dietmar Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |