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: Wie arbeitet "DIM" Kategorie: Programmierung Basic (von Dietmar, Homepage - 13.08.2006 9:12)
 Als Antwort auf Re: Wie arbeitet "DIM" von Tommy - 13.08.2006 1:52
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station, B-Control, sonstige
Hallo Tommy!

> Könntest du bitte noch die Verwendung von DIM...AS...OF erklären?

Bei CCBASIC mußte bei der Definition von Bitvariablen immer ein Index, also eine feste Position im User-RAM, angegeben werden. Dadurch kam es oft zu ungewollten Variablenüberschneidungen. Die Folge davon war, daß viele Anwender sicherheitshalber bei allen Variablendefinitionen einen Index angaben, was aber eine exakte Planung des Variablenspeichers erforderlich machte. Das ist natürlich wesentlich unkomfortabler und fehlerträchtiger als den Speicherplatz vom Compiler automatisch zuordnen zu lassen.

Der OCBASIC-Compiler bietet mit DIM...AS...OF eine neue Syntax an, mit der BIT-Variablen nicht mehr auf einer festen Position im User-RAM gespeichert werden muessen. Stattdessen wird eine BYTE- oder WORD-Variable ohne Index definiert, in der BIT-Variablen abgelegt werden können. Sofern keine Variablenüberschneidungen gewünscht, kann und sollte man von nun an vollkommen ohne explizite Speicherplatzzuweisung arbeiten. Die Anzeige der benutzten RAM-Bytes bezieht sich außerdem nur auf den Fall, in dem der OCBASIC-Compiler den Speicherplatz automatisch zuordnet.

DEFINE bitarray BYTE             ' Eine normale Bytevariable im User-RAM.

DEFINE b0 BIT[1] OF bitarray     ' Durch diese Anweisungen koennen alle
DEFINE b1 BIT[2] OF bitarray     ' Bits der Bytevariable bitarray einzeln
DEFINE b2 BIT[3] OF bitarray     ' angesprochen werden. Falls sich die
DEFINE b3 BIT[4] OF bitarray     ' Lage der Bytevariable durch Hinzufuegen
DEFINE b4 BIT[5] OF bitarray     ' weiterer Variablen verschieben sollte,
DEFINE b5 BIT[6] OF bitarray     ' passt der Compiler automatisch die Lage
DEFINE b6 BIT[7] OF bitarray     ' der Bitvariablen an. Der Anwender muss
DEFINE b7 BIT[8] OF bitarray     ' sich darum also nicht mehr kuemmern.

b7=ON
PRINT b6

Mit diesem Verfahren lassen sich auch WORD-Variablen in ihre zwei Bytes und LONG-Variablen in vier Bytes oder 2 WORDs zerlegen. Byte- oder Wordports mit dieser Syntax zu zerlegen, würde natürlich keinen großen Sinn machen. Übrigens handelt es sich um das verkürzte Beispiel BITARRAY.BAS, das sich zusammen mit einigen anderen Beispielprogrammen im ZIP-Archiv des Compilers befindet.

Viele Grüße
Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: