2

私の問題を解決するための最初のアプローチは、辞書/ハッシュ テーブルを作成することでしたが、それは悪い考えだと言われました。私はPROGMEMに送られました。現在、私の問題は、タッチスクリーンを使用してメニューシステムを作成していることです。各ボタンを異なる言語で使用できるようにする必要があるため、現在の言語、0 - 英語、1 - スペイン語、2 - フランス語を格納するメモリ ロケーションがあります。システムの電源を入れると、この値が という char/byte 変数に読み込まれますlang

コードを次のように動作させたい (LANG_SOUND は定数値 7):

const char* dictionary[3][8] PROGMEM = {
    {"Account", "Date and Time", "Idle", "Language", "Main Menu", "Prescription", "Settings", "Sound"},
    {"Cuenta", "Fecha y Hora", "Espera", "Idioma", "Menú Principal", "Receta", "Configuración", "Sonido"},
    {"Compte", "Date et heure", "Idle", "Langue", "Main Menu", "prescription", "Paramètres", "Son"}
};

strcpy_P(buffer, (char*) pgm_read_word (&(dictionary[lang][LANG_SOUND])));  
screen.print(buffer, CENTER, 23);

上記のPROGMEMページでは、辞書の作成方法が少し異なります。私の問題は、上記のコードが機能しないことです。8 は 8 つの文字列要素用ではないかもしれませんが、文字列あたり最大 8 文字であるため、ポインターを少し間違えたかどうかはわかりません。

では、上記の問題は何であり、どうすれば修正できますか? さらに、リンクに示されている方法でディクショナリ/string_tableを作成する必要がありますか、それとも上記のように作成できますか? (約 40 のメニュー画面と大量のテキストが表示されるので、上記の方法の方が簡単に思えます。)

4

1 に答える 1