Char-Array (String) an eine Funktion übergeben. Array wird aus einer Const geladen.



  • Hallo.

    Ich bin irgendwie am verzweifeln. Vielleicht weiß hier jemand noch einen Rat.
    Auch die Suche im Forum und Netz brachte mir nix bis jetzt.

    Daten:
    Compiler auf Ansi C (NC308 (Mitsubishi))
    Prozessor:
    M32C/83 M30833FJFP

    Problem:
    Ich will ein Array aus Chars an eine Funktion übergeben. Einen String.
    Diese String wird aus einem Constantenfeld geladen:

    const char DISPLAY_Bild_200_Anwahl[10][1][24]={
    // Bildnummer 200 Vorhub 1 Anwahl
    //		 Deutsch (=0) 
    	"0                      ", // 0 RESERVE
     	"21>1. Kraft:           ", // 1 Zeile 2
     	"21>2. Max VHWeg:       ", // 2 Zeile 3
     	"21>3. Ges. vor:        ", // 3 Zeile 4
     	"21>4. PKK vor:         ", //	4 Zeile 5
     	"21>5. HZ vor:          ", // 5 Zeile 6
     	"21>6. HZ hinten:       ", // 6 Zeile 7
     	"21>7. Ges. rueck:      ", // 7 Zeile 8
     	"21>8. PKK rueck:       ", // 8 Zeile 9
     	"21>9. PFFWeg:          "  // 9 Zeile 10
    //"XX123456789012345678901"
    };
    

    Die Funktion schaut folgendermassen aus:

    void LCD_Menuetext_ausgeben(unsigned char spalte, unsigned char zeile, char *Text)
    {
     unsigned char laenge;
    
     	/**** Laenge bestimmen ****/
     	laenge=Text[0] - 48;
     	laenge=laenge*10;
     	laenge=Text[1] - 48 + laenge;
    }
    

    Übergabe läuft so:

    LCD_Menuetext_ausgeben(0, CONST_ZEILE_7, DISPLAY_Bild_200_Anwahl[5][DISPLAY_SPRACHE]);
    

    Nur irgendwie funktioniert das nicht. Es ist immer alles leer.
    Display zeigt nix an. Somit ist der Puffer, der in LCD_Menuetext_ausgeben
    beschrieben wird auch leer. Der Puffer und das Handling zum Display ist
    geprüft und funktioniert. Kann man also auf diese Position hier festlegen,
    das hier der Fehler irgendwo ist. Weiß einer Rat??

    Danke



  • Wieso definierst du denn

    const char DISPLAY_Bild_200_Anwahl[10][1][24]
    

    und nicht

    const char DISPLAY_Bild_200_Anwahl[10][24]
    

    ?

    Was steht in DISPLAY_SPRACHE?



  • const char DISPLAY_Bild_200_Anwahl[10][1][24]

    Erste Zahl ist die Anzahl der Zeilen, 2 ist die Anzahl der Sprachen und 3 ist
    die Länge an Zeichen.

    Also ich habe 10 Zeilen Text
    Im Moment eine Sprache (Deutsch)
    Und das Feld für die Ausgabe hat eine Länge von 24 Zeichen.

    const char DISPLAY_Bild_200_Anwahl[10][4][24]={
    // Bildnummer 200 Vorhub 1 Anwahl
    //         Deutsch (=0) 
        "0                      ", "   1 ", "  2   ","  3      ", // 0 RESERVE
         "21>1. Kraft:           ", "   1 ", "  2   ","  3      ", // 1 Zeile 2
         "21>2. Max VHWeg:       ", "   1 ", "  2   ","  3      ", // 2 Zeile 3
         "21>3. Ges. vor:        ", "   1 ", "  2   ","  3      ", // 3 Zeile 4
         "21>4. PKK vor:         ", "   1 ", "  2   ","  3      ", //    4 Zeile 5
         "21>5. HZ vor:          ", "   1 ", "  2   ","  3      ", // 5 Zeile 6
         "21>6. HZ hinten:       ", "   1 ", "  2   ","  3      ", // 6 Zeile 7
         "21>7. Ges. rueck:      ", "   1 ", "  2   ","  3      ", // 7 Zeile 8
         "21>8. PKK rueck:       ", "   1 ", "  2   ","  3      ", // 8 Zeile 9
         "21>9. PFFWeg:          ", "   1 ", "  2   ","  3      " // 9 Zeile 10
    //"XX123456789012345678901"
    };
    

    So würde es dann mit mehreren Sprachen aussehn.

    Wenn ich die 24 weglassen würden, meckert logischerweise der Compiler rum.


Log in to reply