Für dieses Forum muß Javascript im Browser aktiviert werden!
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