C++ UnicodeString

Résolu/Fermé
manulenicois Messages postés 6 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 13 mai 2009 - 12 mai 2009 à 20:43
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 13 mai 2009 à 20:30
Bonjour à tous.
Voila mon problème :

J'utilise CodeGear RAD Studio sur Vista (C++).

Pour programmer proprement, j'essaie d'utiliser des classes pour la gestion des langues.

Langues.h :
#include <Classes.hpp>
class Langues {
private:
unsigned short int lang; //id de langue
UnicodeString TextIntro[20][2]; //il me faut 2 phrase pour chaque langue

public:
Langues(unsigned short int lang);
virtual ~Langues();
unsigned short int getLang();
void setLang(unsigned short int lang);

UnicodeString getTextIntro(unsigned short int lang, unsigned short int position);//obtenir l'une des 2 phrases dans la langue choisie
};


Langues.cpp
//---------------------------------------------------------------------------
#pragma hdrstop

#include "Languages.h"
//---------------------------------------------------------------------------
Langues::Langues(unsigned short int lang) {
//comme type, je choisi soit :
char* ier[20][2] = {//juste??
//soit
UnicodeString ier[20][2] = {//faux???

{"phrase 1 anglais" ,"phrase 2 anglais"},
{"phrase 1 français","phrase 2 français"}
};

setLang(lang);
}
//---------------------------------------------------------------------------
unsigned short int Langues::getLang() {
return this->lang;
}
//---------------------------------------------------------------------------
void Langues::setLang(unsigned short int lang) {
this->lang = lang;
}
//---------------------------------------------------------------------------
UnicodeString Langues::getTextIntro(unsigned short int lang, unsigned short int position) {
return TextIntro[lang][position];
}
//---------------------------------------------------------------------------
#pragma package(smart_init)


Ce qui es bizarre, c'est qu'avec le char*, il n'y a pas de problème.
Avec le UnicodeString, erreur :
[BCC32 Erreur fatale] Langues.cpp(11): F1004 Erreur du compilateur interne at 0x688c652 with base 0x67e0000

Quelqu'un a une explication ?
Merci d'avance!

6 réponses

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
12 mai 2009 à 22:13
C'est normal les strings unicode s'initialisent différement, il faut mettre un L devant les guillemets ouvrants.

Bonne chance
1
manulenicois Messages postés 6 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 09:06
D'abord, merci pour ta réponse rapide.

Ensuite, tu veux dire qu'il faut initialiser comme ça :

{L"phrase 1 anglais" ,L"phrase 2 anglais"},

??
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
13 mai 2009 à 10:44
Oui.
0
manulenicois Messages postés 6 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 14:11
OK, j'essaie ce soir et je de dis le résultat.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
manulenicois Messages postés 6 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 13 mai 2009
13 mai 2009 à 18:31
Avant tout, merci mamiemando.

J'ai essayé d'abord avec les L, rien a changé.

Puis, j'ai testé des codes du genre
UnicodeString texte = L"str";
Puis UnicodeString texte[2] = {L"str",L"str"};

Les 2 marchent.

En fait, je me suis rendu compte que c'était un problème de taille de tableau :
J'ai réservé plus de lignes qu'il n'en était nécessaire, ce qui a provoqué une erreur ... :-/

En réservant pile la taille qu'il me fallait, tout marchait bien!
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
13 mai 2009 à 20:30
Ok :-)
0