Funktion in Array einbauen

if(menü == 1 && menüeintrag == 2) machwas(); else ++wert[menü][menüeintrag];

Das ist der Code, damit funktioniert es einwandfrei. Selbiges für den Down Button nur halt --wert...

Das ist eine Codezeile.
Da ist nicht zu sehen, was passiert, wenn Du von einem Menupunkt kommst oder wenn Du z einem Menupunkt gehts.

Super

Poste mal den ganzen Sketch zum Spielen.

Lass mich raten: du hast so was:

if(menü == 1 && menüeintrag == 1) machwas(); else ++wert[menü][menüeintrag];
if(menü == 1 && menüeintrag == 2) ....
if(menü == 1 && menüeintrag == 3) ....
if(menü == 1 && menüeintrag == 4) ....
if(menü == 1 && menüeintrag == 5) ....
if(menü == 1 && menüeintrag == 6) ....
if(menü == 1 && menüeintrag == 7) ....
if(menü == 2 && menüeintrag == 1) machwasandreres(); else ++wert[menü][menüeintrag];
if(menü == 2 && menüeintrag == 2) ....
if(menü == 2 && menüeintrag == 3) ....
if(menü == 2 && menüeintrag == 4) ....
if(menü == 2 && menüeintrag == 5) ....
if(menü == 2 && menüeintrag == 6) ....
if(menü == 2 && menüeintrag == 7) ....

na gut, dann halt kein Sketch sondern nur eine Zeile:

void (*func_ptr[3])() = {function0, function1, function2};

Ja Werner, so gehts natürlich auch.

Ich verstehe *func_ptr nicht, ebenso warum 2x runde Klammern?

Ich erkläre ja ganz genau, was ich machen möchte. Entweder Werte verändern, oder Methoden aufrufen. Dies am liebsten aus einem Feld heraus.

Hier kommt was zum Lesen und machen.

https://www.learncpp.com/cpp-tutorial/function-pointers/

Hey, das schaut mal einigermaßen einfach erklärt aus, besten Dank :slight_smile:


So siehts aktuell aus. Ich hab mir die Optik überlegt, und dann losprogrammiert. Programmiertechnisch natürlich uncool, da ich Ints, Floats, Chars, oder nichts bei Funktionsaufrufen wie im Time Menü, anzeige.

Besser wäre eine platzsparende Programmstruktur zu machen, und die Optik ergibt sich halt daraus, hoffen dass es ok aussieht.

Genausowenig wie du int, float, char oder char* in einem Array mischen kannst, kannst du function pointer mit verschiedenen Parametern in ein Array packen.

Ich nehme außerdem an, dass unterschiedliche Menüs unterschiedliche Anzahlen an Einträgen haben können. Da ist ein zweidimensionales Array sowieso Käse.

Was genau (menu==2 menueintrag==3) ist, muss man auch nachschauen. Da sind diese Indizes eher "uncool".

Mein Tip: Verabschiede dich von deinen Arrays. Deine Vermutung, dass du so Speicherplatz sparst ist erstens Spekulation, zweitens nicht so wichtig wie klar nachvollziehbarer Code für diejenigen, die es später verstehen und ändern wollen.

Nein, für mich ist jetzt nur Speicherplatz wichtig, der geht mir nämlich aus. Also soll ich es mit Strukturen versuchen? Jeder Menüeintrag ist eine Struktur, hat alle min/max Werte und die Anweisung ++/--/etc enthalten?

Dann zeige doch endlich mal den Code. Dann kann man dir auch helfen.

Mit OOP Speicher sparen zu wollen, halte ich bei Deinen doch recht unterschiedlich gestalteten Menüs für ein schwieriges Unterfangen. Letztlich müssen dieselben Daten gespeichert und verarbeitet werden. Eventuell solltest Du nach einer ganz anderen Lösung suchen.

Bitte bedenke, meine Antwort kann nicht besser sein als die Qualität Deiner Angaben.

Kannst du mal zeigen, wie du das erzeugst?
image

... Und die doppelt so große Überschrift?

Hi agmue,
Welche ganz anderen Lösungen schweben dir da vor? Felder und Strukturen wurden ja schon genannt, wie wird noch gern ein Menü programmiert?

Lg

@Kolbi Warum weigerst du dich so hartnäckig code zu zeigen?

Platz sparen kann man am besten da wo am meisten verbraucht wird.
Ich (mit meiner Glaskugel) tippe auf die LCD-AnzeigeLib.
Oder etwas das gar nicht gebraucht wird (In der aktuellen Beschreibung jedenfalls).

Ja, ich könnte evtl die drawRoundRect Funktion selber schreiben und dafür die GFX library rausschmeißen. Aber primär gehts mir um Menüstrukturen, will ja was lernen.

Am Besten ich probiere die gängigsten Variationen durch wenn ihr mir helft, und berichte dann was am wenigsten Platz braucht.

Zuerst optimiere ich mal die Felder, dann probiere ich mal Strukturen aus, wobei ich mich frage, soll jeder Menüpunkt eine Struktur sein, oder das ganze Menü eine Struktur? Was wär, bezogen auf 3-Button Steuerung, probierenswert?

Lg

ein Menüeintrag hat bestimmte Eigenschaften (einen Text, eine Funktion die aufgerufen wird,...)
ein Menü hat n Menüeinträge
ein Menüsystem kann n Menüs haben.