Hi Leute, ich möchte im Eeprom ein paar Befehle als Strings ablegen. Allerdings möchte ich nicht, dass ich jeden Befehl über einen Variablennamen anspreche, sondern einfach ein Laufindex verwenden, da die Strings vergleichen werden. Nun stellt sich mir die Frage, ob es überhaupt ein Stringarray gibt und wie man sowas deklariert und initialisiert, oder ob ich dafür 2-dimensionale Arrays verwende. Über eine kleine Hilfe wäre ich sehr dankbar... MFG Carlau
Wenn du genügend Platz im EEProm hast, mach alle Befehle gleich lang und benutze ein 2D-Array dafür. Wenn du Platz sparen musst, mach dir ein zusätzliches Indexarray, welches dir die Startposition des Strings im EEProm angibt.
Vielen Dank für die rasche Antwort. Die Befehle gleich lang machen ist nun nicht mehr möglich, da das Protokoll größtenteils steht. Aber das mit dem 2ten Index klingt interessant und nach einer guten Lösung. Bloß wie könnte ich die Startpositionen der Strings in meinem EEPROM ermitteln. Was für ein array muss das dann sein? was muss ich da genau abspeichern und wie mache ich das? brauche ich da die Adresse meines Strings (genauer die Adresse des ersten Elements in dem jeweiligen String)? Muss mein Indexarray dann vom char*-Typ oder irgendwie deferenziert also mit &String oder so sein? Sorry aber strings machen mich verrückt bzw die Pointer, obwohl es ja nix anderes als ein nullterminiertes chararray ist. Vielleicht kann du das näher erläutern. Wäre dir sehr dankbar... Gruß Carlau
carlau schrieb: > Vielen Dank für die rasche Antwort. > > Die Befehle gleich lang machen ist nun nicht mehr möglich, da das > Protokoll größtenteils steht. Du hast mich missverstanden (und ich habe mich unklar ausgedrückt). Bei einem 2D Array sind alle Zeilen gleich lang. Das heißt nicht, dass die Strings in dem Array alle gleich lang sein müssen. Du hast dann einfach nur ein paar ungenutzte Bytes zwischen den Strings. > Aber das mit dem 2ten Index klingt interessant und nach einer guten > Lösung. Bloß wie könnte ich die Startpositionen der Strings in meinem > EEPROM ermitteln. Mit dem AdressOf-Operator? > Was für ein array muss das dann sein? Ein Array von Pointer auf char? > was muss ich da > genau abspeichern Würd ich gar nicht. Das Indexarray würde ich beim Programmstart zusammenbauen.
1 | char Text1[] = "Hallo"; |
2 | char Text2[] = "Welt"; |
3 | |
4 | char* Texte[2]; |
5 | |
6 | int main() |
7 | {
|
8 | Texte[0] = Text1; |
9 | Texte[1] = Text2; |
10 | |
11 | for( i = 0; i < 2; ++i ) |
12 | printf( "%s\n", Texte[i] ); |
13 | }
|
Du baust jetzt um auf: Texte sind im EEPROM Wenn du damit durch bist, kannst du dich ja damit versuchen auch das Texte Array ins EEPROM zu verfrachten und vom Compiler initialisieren zu lassen
1 | char Text1[] = "Hallo"; |
2 | char Text2[] = "Welt"; |
3 | |
4 | char* Texte[] = { Text1, Text2 }; |
5 | |
6 | int main() |
7 | {
|
8 | for( i = 0; i < 2; ++i ) |
9 | printf( "%s\n", Texte[i] ); |
10 | }
|
Danke nochmal für die Erläuterung. Werd mich nun mal dransetzen... genug gelesen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.