Hallo,
ich versuche seit geraumer Zeit, die Adresse eines String-Arrays und
einen Index an eine Funktion zu übergeben und in dieser Funktion einen
String aus dem Array auf einem LCD auszugeben. Die Strings und das Array
befinden sich komplett im Flash. Zur Ausgabe des Strings verwende ich
die Bibliothek von Peter Fleury.
Das habe ich bis jetzt:
Das läßt sich fehlerfrei kompilieren, liefert aber merkwürdige
Ergebnisse, z.B. werden nicht alle Strings korrekt angezeigt. Wie
übergibt man die Adresse eines sich im Flash befindlichen Arrays an eine
Funktion und wie muß der Aufruf dazu aussehen?
Vielen Dank im Voraus.
Krause
denn genau das ist es, was die Funktion bekommt:
Einen Pointer auf ein Array von Zeiger, die selbst const sind.
Und jeder Zeiger zeigt wieder auf ein Array von Charactern, die
ebenfalls const sind.
Eben einen Pointer auf:
1
PGM_Pstr_array[]PROGMEM
(und da war auch der Hund in deiner Erstversion versteckt. Du hast 1
Pointer zu wenig gehabt)
const char** könnte somit durch PGM_P* ersetzt werden. Wobei mir der
Vorteil von PGM außer der kürzeren Schreibweise nicht ganz klar ist.
Beim Aufruf kann man der Funktion auch ein RAM-Array übergeben, welches
der Compiler klaglos akzeptiert, nur die Verarbeitung in der Funktion
geht dann schief.
Wie dem auch sei, nochmals vielen Dank.
Krause