Hallo,
ich versuche gerade ein LCD Menu von Reinhard Nickels, das ich hier im Forum gefunden habe, in eine Klasse zu verpacken, um später mehrere Menu Objekte erstellen zu können. Dank meiner etwas dürftigen C++ Kenntnisse scheitere ich momentan leider kläglich daran bei der Erstellung des Objekts ein Array mit mehreren Strings zu übergeben. Ich komme hier mit dem Datentyp char* myStrings[] nicht klar. Es gibt keine Fehler beim kompilieren.
Hier ist der Codeauszug.
Display.cpp:
Menu::Menu(int i){
MenueItems = i;
char* MenueLine[] = {"Zeile 1","Zeile 2","Zeile 3","Zeile 4","Zeile 5","Zeile 6"}; // Mein Problemkind
}
void Menu::show() {
//char* MenueLine[] = {"Zeile 1","Zeile 2","Zeile 3","Zeile 4","Zeile 5","Zeile 6"};
lcd.clear();
lcd.blink();
lcd.cursor();
for (int i=0;i<4;i++) {
lcd.setCursor(0,i);
lcd.print(MenueLine[DisplayFirstLine + i]);
}
lcd.setCursor(0,(CursorLine-DisplayFirstLine));
}
Display.h
class Menu {
private:
volatile boolean turned;
volatile boolean fired;
volatile boolean up;
char* MenueLine[];
int CursorLine;
int DisplayFirstLine;
int MenueItems;
public:
Menu(int i);
void show();
void move_down();
void move_up();
void select();
};
Projekt.ino
#include "Display.h"
Menu MSetup(6);
Das setzen von char* MenueLine[] im Konstruktor bleibt anscheinend unbeachtet, die Funktion show() gibt nur Zeichensalat aus, aber nicht den inhalt von MenueLine[].
Setze ich char* MenueLine[] in der Funktion selbst, hier gerade auskommentiert, funktioniert das ganze. Ich stehe völlig auf dem Schlauch weshalb sich das Array nicht im Konstruktor setzen lässt, so wie es mit den MenueItems funktioniert.
Die Definition im Konstruktor ist nur eine Zwischenlösung zur Fehlersuche. Eigentlich sollte das Array beim Erzeugen des Objektes an den Konstruktor übergeben werden. Soweit bin ich noch gar nicht.