Bonjour à tous,
Je fais appel à vous afin que vous puissiez m'aider à comprendre le pourquoi du comment à mon problème.
J'ai une application en C sous Builder 6 dans laquelle je simule un écran à pixel (genre console GameBoy) à l'aide d'un StrinGrid sur lequel des textes apparaissent en plusieurs langues. En résumé, chaque case du StringGrid corresponde à un pixel que je mets en noir ou en blanc.
Les textes à afficher sont contenus dans un fichier Excel qui est chargée à l'ouverture de l'application: 1 ligne par mot qui est traduit en plusieurs langues (soit 500 lignes pour 500 mots et 24 colonnes pour 24 langues).Pour faciliter l’appel d’un mot à afficher sur l’écran simuler, chaque ligne correspond à une variable. Il suffira alors de détecter la langue sélectionnée dans l'application puis d’appelé la variable lié au mot et on viendra alors trouvé le mot traduit dans la bonne langue.
Parmi ces langues du fichier Excel il y a le Russe utilisant l’ISO-8859-5 avec tout son ensemble de caractères spéciaux. Cependant, lorsque je charge mon tableau de mots, ces caractères spéciaux sont traduits par de « ? ». Logique me direz vous, car il me faut l’ISO-8859-5 dans mon application et non celle par défaut (ISO-8859-1).
Mais voilà j’ai beau changer l’ISO avant le chargement. Il me charge malheureusement toujours des « ? ». Ainsi, pour exemple avec le mot « lundi » en russe « Понедельник », j’ai « ???????? »
Voici la fonction utilisée pour le chargement appelé pendant que l'on balaye l'ensemble du fichier excel:
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CellText = ReadTextOnExcelCell(WorksheetIndex, NbLanguage+XL_COL_OFFSET, Line-2); où: WorksheetIndex est la page du fichier excel NbLanguage est le nombre de langue soitt le nombre de colonne XL_COL_OFFSET est juste un offset car les traduction des mots commencent colonnes 6
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 AnsiString TForm1::ReadTextOnExcelCell(int WorksheetIndex, int Column, int Line) { if(Column==26) //Colonne des mots en Russe { this->Font->Charset = RUSSIAN_CHARSET; //!!!!!!!!!! ISO 5 Font->Charset = RUSSIAN_CHARSET; //!!!!!!!!!! ISO 5 } Else // colonnes autres langues { this->Font->Charset = DEFAULT_CHARSET; Form1->Font->Charset = DEFAULT_CHARSET; } //Sheet contains 256 column and 65 536 lines if(Column < 257 && Line < 65537) { Variant Sheet = GlobalParameters.vXLWorkbook.OlePropertyGet("Worksheets", WorksheetIndex); GlobalParameters.vCell = Sheet.OlePropertyGet("Cells", Line, Column); Variant vValue = GlobalParameters.vCell.OlePropertyGet("Value"); return vValue; } return ""; }
Je me pose donc la question de savoir si ce « Font->Charset = RUSSIAN _CHARSET; » qui est lié à ISO-8859-5 s’applique bien aux fonctions OlePropertyGet me permettant de chargé le mot traduit.
En espérant avoir été clair...
Merci d'avance
Partager