Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: String-LCD-Ausgabe Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 31.01.2012 21:45)
 Als Antwort auf Re: String-LCD-Ausgabe von Markus - 31.01.2012 19:53
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Mini M-Unit, Open-Mini Station, sonstige
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

Bisherige Antworten: