begin process at 2012 05 30 04:53:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Table Ascii Etendue -> Forcer le jeu de caractères [API WIN32/VISUAL]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Table Ascii Etendue -> Forcer le jeu de caractères [API WIN32/VISUAL]

jeudi 28 janvier 2010 à 03:35:46 | Table Ascii Etendue -> Forcer le jeu de caractères [API WIN32/VISUAL]

stagiairecpp

Bonjour,

J'aurais encore une fois besoin de vos lumières si vous voulez bien m'aider.

Voici la donne :
J'ai en ma possession une petite application console, sous forme d'exe, dont je n'ai pas la source mais de la doc technique.
On m'a demandé de reproduire son fonctionnement et d'intégrer le résultat dans une application avec GUI codée en C/ApiWin32, l'unicode est désactivé pour le compilateur ainsi que pour le linker.

Mon problème :
Tout fonctionne très bien sauf une partie importante qui génère des identifiants uniques en fonction d'une chaine de caractère récupérée dans un Edit Control à l'aide de l'api GetDlgItemText().
En effet, un calcule est réalisé sur la chaine (char *) caractère par caractère avec un (unsigned char)chaineTraitee[i] dans une boucle.
Or si sous l'application console le résultat est identique chez tous nos clients quels que soit le jeu de caractère par défaut de leur OS, sous l'application GUI tous les caractères de la table ascii étendue diffèrent (par exemple le 'ç' devrait me retourner 0x87 or il me retourne la valeur française 0xE7.
Me voilà bien embêté.

Donc ma question :
Existe t'il une solution qui consisterait à forcer le jeu de caractère utilisé lors de la récupération de la chaine dans le Edit Control ?
J'ai regardé pas mal de discussion à ce sujet, mais je n'ai rien trouvé qui fonctionnait. :(
Je suis sous VS2008.

Merci à ceux qui s'intéresseront à mon soucis.

@+
mercredi 3 février 2010 à 03:42:07 | Re : Table Ascii Etendue -> Forcer le jeu de caractères [API WIN32/VISUAL]

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Les fenêtres sous Windows utilisent les codes ANSI au lieu de ASCII. Ce dernier codage est justement utilisé par les applications en mode console. C'est donc normal d'avoir ce genre de comportement. Pour résoudre le problème il suffira d'utiliser la fonction CharToOem() qui convertira les codes ANSI de ta chaine de caractères en codes ASCII:
CharToOem(buffer,buffer);
buffer étant le tampon contenant le texte récupéré depuis l'Edit. Tu pourras ensuite faire ton calcul sur la chaine correctement.
mercredi 3 février 2010 à 12:12:58 | Re : Table Ascii Etendue -> Forcer le jeu de caractères [API WIN32/VISUAL]

stagiairecpp

Salut racpp,

Merci pour ton explication :)

En fait quand je me suis aperçu du problème et que j'ai commencé à bricoler, j'ai essayé par deux fois sans succès d'activer le flag "CONVERT to Oem" de mon Edit Box. Je viens de réessayer à l'instant et le constat est le même, ça ne change en rien la chaîne retournée. Je n'ai donc pas orienté mes recherches vers une conversion Oem pensant qu'il devait s'agir d'autre chose.

Pour ne pas stagner, ce que j'ai fait c'est que j'ai comparé mes résultats Console et mes résultats Edit Box pour trouver exactement mes deux jeux de caractères et faire une petite table rapide de conversion.

Mais ta fonction m'aurait bien simplifié la vie et je te remercie de me l'avoir indiquée parce que comme ça au moins je suis certain du résultat (même si la mienne semblait fonctionner pour toute la batterie de chaînes à convertir que nous avons testé).

En tous cas merci de ton aide.

@+


Cette discussion est classée dans : table, application, caractère, jeu, ascii


Répondre à ce message

Sujets en rapport avec ce message

algo ou source ? [ par JoebarGlut ] Salut, Je suis en train de coder mon premier jeu en mode multijoueur en LAN et j'aurais une ou deux kestions algorithmiques.1- doit-il forcement y avo Ajouter un timer à une application Turbo C++ [ par Ombitious_Developper ] salut:J'ai fait un jeu avec Turbo C++ 3.0 je souhaite savoir comment afficher le temps écoulé pendant ce jeu .et Merci. Menu qui bloque l'application [ par SnOOpss ] Bonjour j'ai une application directX en mode fenetré avec un menu et mon probleme c'est que si quelqu'un clique sur le menu ou affiche les options du Caractère non present dans la ASCII [ par poiuytrez3 ] Bonjour, Je cherche à afficher un caractère sur la console windows en C qui est présent dans la table ASCII étendue. http://www.commentcamarche.net/b traitement des données ascii-urgentttt- [ par anonyme80 ] bonjour,dans le cadre de mes études , je dois réaliser une application au format DLL ( en c++) , cette application est appelée par l'envoi ou la lectu table de hachage et liste chainée [ par cyrina84 ] bonjour à tous, je voudrais bien  savoir  comment créer une application d'apprentissage automatique.on m'a demandé de réaliser une application qui per visual C++ [ par caloucalou ] salut tous le monde, Aider moi svp, cela fait 4 jour que je patauge[^^sad1]. Je doit faire un application qui doit présenter un tableau a l’utilisateu Aide graphisme et deplacement commandé [ par casanoveg ] Boujour à tous,Bien que j'ai encore beaucoup de choses à apprendre avant de me lancer dans le graphisme 2D en C++, je voulais quand même m'y mettre un Problème d'Ascii [ par Arecibo ] Je sais que je dois commencer à vous emm***er avec l'Ascii mais bon, j'ai encore un problème.Mon programme est censé agir ainsi lors d'un click sur le problème caractère ascii [ par acidjackproject ] Bonjour, j'ai un petit problème j'ai crée en C en petit programme avec une interface graphique (si je peux dire ainsi) avec des caractères ascii. Mon


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales