Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo nochmals zu den Arraygrößen ! > > Die Array Endmarkierung gefällt mir auch gut, vielleicht besser als mein Längeneintrag in [0]. > Nur scheint mir damit ein Problem naturgemäß noch nicht lösbar: > Man muß zur Enderkennung einen Leseversuch machen, der außerhalb des Arrays liegen kann, > wenn man die Endmarkierung vergessen hat. > Man könnte halt versehentlich sehr weit außerhalb lesen. > > Aber eine gute Idee ! > > Michael > > > Hallo Steffan, > > ich kenne keine funktion wie Array.lenght in c2 die du hier benötigst um die vom > > compiler bestimmte Länge zu ermitteln. > > Aber programatisch könnte man es entweder durch eine spezielle array end Markierung lösen (z.B. "-1"), > > bis zu welcher deine Schleife dann läuft. > > In meiner Haussteurung habe ich die gesamte Menü Darstellung und Navigation allerdings sehr generisch > > gelöst. Dort exisistieren mehrere grosse arrays, die menu-item tags, typen, ressourcen > > und unter menü-strukturen definieren. > > Die algorithmen sind generisch und rekursiv, so dass sich (theoretisch) beliebig tiefe menü > > strukturen aufbauen lassen. Die array Konstanten sehen dann so aus: > > > > <code> > > const MENU_TAGS[] = "Hauptmenü", // 0 > > "untermenü1", // 1 > > "untermenü2", // 2 > > > > const MENU_TYPE[] = MENUITEM_SUBMENU, //0 > > MENUITEM_SUBMENU, //1 > > MENUITEM_SUBMENU, //2 > > > > const MENU_RESOURCES[]= 0, //0 > > 0, //1 > > 0, //2 > > 0, //3 > > > > const MENU_SUBSTART[] = 1, //0 > > 10, //1 > > 20, //2 > > > > const MENU_SUBEND[] = 6, //0 > > 15, //1 > > 22, //2 > > > > </code> > > > > > > das heißt in dem fall das ein Menüeintrag ein untermenü beschriebt, so sind an der selben index position > > von SUBSTART und SUBEND die offsets in das untermenü definiert. > > Die Algorithmen für anzeige und navigation bzw. aktionsauslösung im menü arbeiten damit lediglich > > auf dieser struktur und sind rekursiv. > > > > <code> > > function navigateMenu( byte pcfLCD, byte startingPos ) returns byte > > { > > menuPos pos; > > > > pos.firstDisplayedLine = c.MENU_SUBSTART[ startingPos ]; > > pos.selectedLine = c.MENU_SUBSTART[ startingPos ]; > > pos.startingLine = c.MENU_SUBSTART[ startingPos ]; > > pos.endingLine = c.MENU_SUBEND[ startingPos ]; > > pos.refreshNeeded = 1; > > </code> > > > > zur Anzeige des Hauptmenüs wird diese funktion dann einfach von dem für das betreffende Display > > zuständigen thread so aufgerufen: > > > > menu.navigateMenu(pcfLCD,0); > > > > jeder Untermenü Aufruf ruft die funktion rekursiv auf. > > > > Damit gibt es nirgendwo eine Schleife oder ähnliches die über die arraystrukturen läuft, > > sondern sie beschrieben sich selbst. > > Das gesamte menü sowie die Menü/Untermenüstruktur wird lediglich über die Arraykonstanten definiert. > > > > Das nur so als Tip. Funktioniert bei meiner Lösung schon seit 4 Jahren wunderbar und die Architektur > > hat schon entliche Erweiterungen "überlebt". > > > > ... sorry code kann ich leider nicht zur Verfügung stellen.. > > > > Gruß Olaf > > > > > > > > > Hallo, > > > > > > ich hab heute mal intensiv Lektüre und natürlich auch das Forum zu einer Problemstellung > > > zu konstanten Arrays befragt, aber leider doch keine Antwort gefunden. Und zwar geht es um > > > folgendes Problem: > > > > > > Ich habe konstante benannte Arrays deklariert und möchte nun in meinem Programm die Anzahl > > > der Elemente ermitteln. Ich komm hier einfach nicht auf eine passende Idee. Das sieht ungefähr > > > so aus: > > > <code> > > > const MENUE1[] = "Füllen", "Michen", "Leeren"; > > > const MENUE2[] = "Heben", "Senken"; > > > ... > > > </code> > > > Nun möchte ich auf die einzelnen Elemente der Arrays zugreifen. Dazu durchlaufe ich eine Schleife > > > und lese die Elemente über den Index aus. > > > <code> > > > str = MENUE1[i]; > > > </code> > > > Da die einzelnen Arrays eine unterschiedliche Anzahl von Elementen besitzen, brauche ich dazu > > > die Anzahl der Elemente, sonst kommt es zu einer Verletzung des zulässigen Indexbereiches. > > > In VBA gibt es zu diesem Problem eine Lösung z.B. mit "UBound()". > > > Gibt es hier auch so etwas ähnliches? > > > > > > Wäre super, wenn mir jemand weiterhelfen könnte. > > > > > > Viele Grüße > > > Steffan
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB