begin process at 2012 05 25 03:49:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

Erreur bizarre : MessageBox affiche du texte en japonais


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

Erreur bizarre : MessageBox affiche du texte en japonais

mardi 22 avril 2008 à 09:14:16 | Erreur bizarre : MessageBox affiche du texte en japonais

epineurien

Bonjour à tous !

J'ai quelques problêmes avec visual studio C++. Quand j'utilise une MessageBox le texte apparait ... en japonais. J'ai désactivé le support de ces caractères et à la place j'obtiens ... des carrés. Là je comprend pas, parceque mes pointeurs sont bon ; si je fais varier la longeur de mes chaines, ca varie aussi dans la messagebox.

Petit détail , au lieu de lire les caractères comme faisant 1 octect (ASCII normal) l'api semble les lire par deux (chaine de 6 caractères en fait 3jap. et elle ne reconnait le zéro terminal que si il fait 2octet).

Si quelqu'un à une idée, parceque ca me faisait pas ça avec masm32...

Merci d'avance !

Voilà le code :

    char ClasseFenetre[8]="BUTTON";      //chaine au hazard
    char HgTitreFenetre[27]="Session Hydrargyrum 0.20a";
    OffsetClasse=&HgClasseFenetre[0];
    OffsetTitre=&HgTitreFenetre[0];
 __asm {
    mov eax,0
    mov ebx,OffsetClasse
    mov ecx,OffsetTitre
    mov edx,MB_YESNO+MB_ICONEXCLAMATION
    push edx
    push ecx
    push ebx
    push eax
    call DWORD PTR MessageBox
    }
Franchement je voit pas d'où ça peut venir ...


Jetez un coup d'oeil à mon projet de moteur 3D par lancer de rayons : 
http://hydrargyrum.ifrance.com.
mardi 22 avril 2008 à 10:27:10 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

BruNews

Administrateur CodeS-SourceS

char ClasseFenetre[]= "BUTTON";
char HgTitreFenetre[]= "Session Hydrargyrum 0.20a";

Ces 2 chaines en haut de module, segment .data mis par le compilo.

Fonction FULL ASM ou FULL C mais jamais de mixage !!!
__declspec(naked) void __stdcall bnMsgbox()
{
  __asm {
    push   0
    push   offset HgTitreFenetre
    push   offset ClasseFenetre
    push   0
    call   dword ptr MessageBox
    ret    0
  }
}

ciao...
BruNews, MVP VC++

mardi 22 avril 2008 à 13:07:35 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

epineurien

Tient je me demandait aussi comment on faisait pour faire autre chose que des variables locales(sur la pile) en C, j'avais pas pensé à simplement les mettres hors d'une fonction.
Note : il s'agit pas d'une fonction , le code que j'ai mis est dans le corps de 'main'. 

J'arrive pas à déclarer ta fonction (enfin, le linker ne la trouve pas). Je la met avant 'main' et je met 'DWORD __stdcall bnMsgBox();' dans l'entête,  pourtant j'ai quand même 'error LNK2001: symbole externe non résolu _bnMsgBox@0'.

J'ai remplacer par tes instructions (chaine dans l'entete,...) mais ca donne toujours du jap. (enfin, des cubes là). Mais c'est pas normal, peut importe ce qu'on passe comme argument, la fonction est sensé recevoir une chaine qu'elle interprête comme de l'ASCII, hors y a pas de caractère asiatique dans ce format, donc comment elle fait ???

Rah, c'était tellement plus simple avec du pur asm. Qu'est-ce qui faut pas faire pour avoir accés à 4 pauvres instructions en plus ...


Jetez un coup d'oeil à mon projet de moteur 3D par lancer de rayons : 
http://hydrargyrum.ifrance.com.
mardi 22 avril 2008 à 13:26:10 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

BruNews

Administrateur CodeS-SourceS
C'est du PUR ASM !!!
faut juste bien comprendre ce qui se passe.

quand tu mets:
char ClasseFenetre[8]="BUTTON";
dans une fonction, les octets "BUTTON" sont bien placés par le compilo dans le segment .data, idem si on l'avait fait à la main dans MASM.


ciao...
BruNews, MVP VC++
mardi 22 avril 2008 à 13:39:24 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

epineurien

Ah ?
Etrange , parceque le compilateur me refuse toute commande 'offset Variable', si 'Variable' est dans le corps d'une fonction (pas de problêmes maintenant que je les ais mises en dehors), avec 'lea eax,variable' ca fonctionne par contre.
Ca ressemblait au problême de MASM qui refuse la commande 'offset' sur une variable locale : celle-ci est dans la pile et non dans le segment de data.
Je me suis donc dit que les variables déclaré hors de l'entête en C sont elles aussi des variables locales.

Et pour ce qui ce qui est de savoir comment une fonction qui est sensée interprété de l'ASCII se met à faire ... autre chose ? Et pour la déclaration de fonction ? J'ai été voir tes autres codes sources (a force de poser des questions et que ce soit toujours toi qui réponde je commence à avoir un gros dossier 'Code BruNews' sur mon disque ), mais je voit pas où j'ai m... dans la déclaration (c'est décidé ce soir j'achète C++ pour les nuls en rentrant).


Jetez un coup d'oeil à mon projet de moteur 3D par lancer de rayons : 
http://hydrargyrum.ifrance.com.
mardi 22 avril 2008 à 13:50:18 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

BruNews

Administrateur CodeS-SourceS
C'est clair, offset est calcul (debSegment - posSegment) donc ce qui est sur stack ne peut pas fonctionner ainsi mais en décalage de ESP.

ciao...
BruNews, MVP VC++
mardi 22 avril 2008 à 19:10:51 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

epineurien

Bon finalement j'ai pas eu besoin du bouquin.
J'ai définit ta fonction, je la lance et .... Japonais .
Donc ça vient pas du code.
Y a un réglage 'forcer l'affichage de caractère bizarre' dans les options de VSC++, des fois que je l'aurais coché par erreur ?


Jetez un coup d'oeil à mon projet de moteur 3D par lancer de rayons : 
http://hydrargyrum.ifrance.com.
mercredi 23 avril 2008 à 13:12:46 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

epineurien

Personne n'a de solution ?
Parceque tant que j'arrive pas à afficher correctement une simple msgBox, c'est même pas la peine d'essayer les autre API.


Jetez un coup d'oeil à mon projet de moteur 3D par lancer de rayons : 
http://hydrargyrum.ifrance.com.
mercredi 23 avril 2008 à 13:27:06 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

BruNews

Administrateur CodeS-SourceS
Mets un lien sur ton projet VS, je regarderai ce soir en rentrant.

ciao...
BruNews, MVP VC++
mercredi 23 avril 2008 à 17:25:03 | Re : Erreur bizarre : MessageBox affiche du texte en japonais

epineurien

C'est fait :
http://hydrargyrum.ifrance.com/telechargement/Demonstration.rar.txt
Il faudra enlever le '.txt' aprés le téléchargement (un problême avec l'hébergeur).
Merci de ton acharnement à m'aider.


Jetez un coup d'oeil à mon projet de moteur 3D par lancer de rayons : 
http://hydrargyrum.ifrance.com.

1 2

Cette discussion est classée dans : texte, mov, messagebox, push, japonais


Répondre à ce message

Sujets en rapport avec ce message

Ancien code - CreateWindowEx ne fonctionne pas [ par TehWan ] Je ne comprends vraiment pas pourquoi CreateWindowEx ne fonctionne pas. Je code en ancien code avec MASM32. J'ai même essayé la nouvelle syntaxe (invo masm32 [ par kiki127 ] je n'arrive pas à compiler ce petit prog avec masm.pourriez vous m'indiquer la marche a suivre.merci d'avanceprog segmentorg 100hassume cs:progstart:c probleme affichage cadre [ par jo_benni ] Salut à tous, voilà je débute en assembleur et j'ai fait un petit programme exe qui affiche une succession de cadre de plus en plus grand. Le probleme Quels sont les parametres (nombre, taille...) [ par Renfield ] Bonjour,on peut appeler RunDll32 pour executer des fonctions contenues dans des dll...j'aimerais m'affranchir de cette étape, mais j'ai pour cela beso boot secteur [ par henri12 ] salutje viens de decompiler le boot secteur d une disquette de demarrageje voudrais savoir ou puis je mettre 15 octet de code que je veux faire execut BeginPaint code débutant [ par TRAX44 ] Bonjour, le problème est tout simple je comprends absolument pas ce qui marche pas. Le "programme" est censé créer une fenêtre est afficher du texte e Messagebox (niveau débutant) [ par Ulala2 ] Bonjour,je suis en train de créer une dll que je vais invoquer en vb6.Tout marche très bien, sauf pour la fonction messagebox dont n'arrive pas à récu Problemme avec mes character... XD [ par belette321 ] J'esseil d'ajouter une commande administrateur a dans un des mes jeux en-ligne, /admin_popup (Fait apparaitre un MSG dans une boite dans le lobby). Un Probléme d'Affichage pour les chaines de caractères [ par HwW_Mb ] Salut les petits :-)A L'AIDE !!!!!!!!!!!!!j'ai programmé un Mini Os avec un secteur de démarrage et un noyau de 5 secteursmais je n'arrive pas à affic conversion minuscule [ par safwensafwen ] C'est unprogramme qui fair la conversion en minuscule en utilisant la pile je n'arriv


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 2,137 sec (3)

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