
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, > Was hat es z. B. mit dem Rückgabewert auf sich ," return irgendwas " der mir wie ich herausgefunden habe die erste Wordvariable besetzt ? Ich kann doch in den Funktionen jede definierte Variable überschreiben und dann damit weiterarbeiten. Oder ist das nur eine Option auf die weiterentwicklung von Basic++ ? Oder denke ich noch immer zu "unstrukturiert" ? Das RETURN [var] hat den Vorteil, daß Du die Funktion wie einen Wert bzw. Variable einsetzen kannst. Ich habe unten mal ein Beispiel angehängt, in dem das bei der Funktion getvariable(variablenname) demonstriert wird. Du kannst hier nach Herzenslust z.B. schreiben: if x>getvariable(schaltschwelle) then.... print getvarible(schaltschwelle) y=getvariable(Schaltschwelle) usw. ohne erst Umwege gehen zu müssen. Das Beispiel zeigt nebenbei, wie ich in meinen Programmen Variablenknappheit umgehe. > Währe schön, wenn wir über die Weihnachtstage ein bißchen über - Programmierkunst - diskutieren könnten !? Da gibt es nix zu diskutieren. Es gibt zwar viele Lösungsmöglichkeiten für ein Problem, letzlich ist die Herangehensweise aber Geschmackssache und über den läßt sich ja bekanntlich nicht streiten. Grüße Henrik '--------- Programmroutinen für Pseudovariablen im EEPROM ---------- 'Plattform C-Control1 V2.x mit zusätzlichem EEPROM auf Adresse 162-- 'Programmsprache: Basic++ Version 1.0 'Henrik Reimers Dez. 2004 http://www.henrik-reimers.de ' 'In der vorliegenden Version werden nur Bytevariablen unterstützt.-- 'Ein Ausbau auf Wordvariablen ist problemlos möglich. '------------------------------------------------------------------- define temp as word[2] define address as word[3] define addrhi as byte[5] define addrlo as byte[6] define data as byte define dev as byte const schaltschwelle1 = 600h 'Beispiele für die Zuordnung von const schaltschwelle2 = 601h 'Konstanten als Variablenpointer const schaltschwelle3 = 602h const schaltschwelle4 = 603h declare function setvariable(a ref address, b ref data) declare function getvariable(a ref address) declare function writebyte(d ref dev) declare function readbyte(d ref dev) lcd.init '-------------- Beispiel für den Aufruf --------------------------- setvariable(schaltschwelle1, 100) lcd.clear lcd.print "Wert ist: " & getvariable(schaltschwelle1) end '------------------------------------------------------------------- function setvariable(a ref address, b ref data) writebyte(162) end function '------------------------------------------------------------------- function getvariable(a ref address) readbyte(162) return data end function '------------------------------------------------------------------- '- BYTE (DATA) AUF EEPROM ADRESSE (ADDRESS) SPEICHERN - '- oder LESEN. Nutzt die Variablen dev, data und address '- address ist in addrhi und addrlo byteweise geteilt '- und muss entsprechend überlappend deklariert werden! '- die universelle Variable temp könnte auch durch eine '- Bytevariable ersetzt werden. Das Word frisst aber in '- meinen Anwendungen keinen Platz, da es sowieso für '- verschiedene Zwecke benutzt wird. '------------------------------------------------------------------- function writebyte(d ref dev) lcd.off IIC.init IIC.stop IIC.start IIC.send dev IIC.send addrhi IIC.send addrlo IIC.send data IIC.stop IIC.off for temp = 0 to 50 'Warteschleife zur Sicherstellung, daß next temp 'das Byte zuverlässig geschrieben wird lcd.init switchonly end function '----------------------------------------------------------------- '--- BYTE (DATA) VON EEPROM ADRESSE (ADDRESS) LESEN --- '----------------------------------------------------------------- function readbyte(d ref dev) lcd.off IIC.init IIC.stop IIC.start IIC.send dev IIC.send addrhi IIC.send addrlo IIC.stop IIC.start IIC.send (dev +1) IIC.get data IIC.stop IIC.off lcd.init switchonly end function '------------------------------------------------------------------- Meine Homepage: http://www.henrik-reimers.de/control/ |
| Antwort schreiben |