Transcodage arabe anglais

Résolu
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 - 21 mars 2008 à 16:07
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 28 mars 2008 à 01:25
bonjour,
je suis en DUT 2e année ... je dois réaliser un projet pr la
mi-mars  ;
:
realisation d'un logiciel de transcodage anglais/arabe
...
voila j'ai commencé a me remettre au langage C , d'ailleurs je me dit que
j'aurais bien fait 'écouter un peu plus en cours ^^ ...
Donc si quelqun a
déja réalisé ce type de projet ou si vous avez un code source d'un logiciel
proche qui pourrait m'aider , merci de me faire signe

pour ma part je suis chargé de l'interface graphique.

j'utilise WinApi mais je n'arrive pas a intégrer une zone de texte !!!!

voila ou j'en suis :

#include <windows.h>
#include <stdio.h>

#define ID_B_TRADUIRE 0
#define ID_B_QUITTER 1
#define ID_B_TEST 2
#define ID_ANGAR  3
#define ID_ARANG  4

HINSTANCE instance;

LRESULT CALLBACK procedureFenetrePrincipale(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
LPSTR lignesDeCommande, int modeDAffichage)
{
    HWND fenetrePrincipale;
    WNDCLASS classeFenetre;
//Variables de la fonction principale
    MSG msg;
    instance = cetteInstance;
         // Structure de la classe de la fenêtre principale

    classeFenetre.style = 0;
    classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
    classeFenetre.cbClsExtra = 0;
    classeFenetre.cbWndExtra = 0;
    classeFenetre.hInstance = NULL;
    classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
    classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    classeFenetre.lpszMenuName =  NULL;
    classeFenetre.lpszClassName = "classeF";

    // On prévoit quand même le cas où ça échoue
    if(!RegisterClass(&classeFenetre)) return FALSE;

    fenetrePrincipale = CreateWindow("classeF", "Transcodage arabe anglais", WS_OVERLAPPEDWINDOW,
                                   CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                   NULL, NULL, cetteInstance, NULL);
    if (!fenetrePrincipale) return FALSE;

    ShowWindow(fenetrePrincipale, modeDAffichage);
    UpdateWindow(fenetrePrincipale);

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

//variables globales
HINSTANCE cetteInstance;
HWND hEdit[1]; //handle des deux contrôles d'édition

//Afficher un contrôle d'édition d'une ligne
HWND afficheEditUneLigne (HWND fenetrePrincipale)
{
HWND hEdit=CreateWindow(
                        "EDIT",
                        "Modifiez le texte SVP",
                         WS_VISIBLE|WS_CHILD|WS_BORDER|ES_CENTER ,
                        30, 80, 383, 30,fenetrePrincipale,NULL,instance,NULL);

return hEdit;
}
//Traitement des messages
void msgCtl(HWND fenetrePrincipale,UINT msg, WPARAM wParam, LPARAM lParam)
{
UINT motBas =  LOWORD(wParam);
HWND hCtl= (HWND) lParam;
int nombreLignes=0;
char lignes[70]={0},nLignes[5]={0};

}
//Traitement des notifications
void NotificationControle(HWND fenetrePrincipale,UINT msg, WPARAM wParam, LPARAM lParam)
{
UINT motHaut= HIWORD(wParam);
HWND hCtl= (HWND) lParam;

switch(motHaut)
{
        //Notification EN_CHANGE envoyée par le contrôle
        case EN_CHANGE:
                if (hCtl == hEdit[0])
                {
                MessageBox(fenetrePrincipale,"Vous avez modifié le texte d'une contrôle à une ligne !!","",MB_OK);
                }
        break;
        case BN_CLICKED: // cliquer sur un des boutons pour analyser les messages
               msgCtl((HWND)fenetrePrincipale,(UINT)msg,(WPARAM)wParam,(LPARAM)lParam);
        break;
}
}

LRESULT CALLBACK  Procedure (HWND fenetrePrincipale, UINT msg, WPARAM wParam, LPARAM lParam)
{

        switch (msg)

    {
        //afficher les contrôles d'édition à la réception du message WM_CREATE
        case WM_CREATE:
               hEdit[0]=afficheEditUneLigne (fenetrePrincipale);

        default:
            return DefWindowProc(fenetrePrincipale, msg, wParam, lParam);
        }
}
LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HWND boutons[5] = {NULL};

    switch (msg)
    {
        case WM_CREATE:
                boutons[0] = CreateWindow("BUTTON", "Traduire", WS_CHILD | WS_VISIBLE,
        5, 145, 383, 30, fenetrePrincipale, (HMENU)ID_B_TRADUIRE, instance, NULL);
                boutons[1] = CreateWindow("BUTTON", "Quitter", WS_CHILD | WS_VISIBLE,
        5, 185, 383, 30, fenetrePrincipale, (HMENU)ID_B_QUITTER, instance, NULL);

                HWND hGroup = CreateWindow("BUTTON","*** Votre Choix : ***",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
        10,5,383,60,fenetrePrincipale,NULL,instance,NULL);
    {
        HWND hControle;
                hControle = CreateWindow("BUTTON","anglais/arabe",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
        20,25,120,30,fenetrePrincipale,(HMENU)ID_ANGAR,instance,NULL);
                hControle = CreateWindow("BUTTON","arabe/anglais",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
        260,25,120,30,fenetrePrincipale,(HMENU)ID_ARANG,instance,NULL);
                 return 0;
    }
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_B_TRADUIRE:
                    MessageBox(fenetrePrincipale, "Il n'y a rien à traduire", "Bonjour.", MB_ICONINFORMATION);
                    break;

                case ID_B_QUITTER:
                    SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                    break;

                case ID_B_TEST:
                    SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                    break;
            }
            return 0;

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

        default:
            return DefWindowProc(fenetrePrincipale, msg, wParam, lParam);
    }
}

merci de votre aide

64 réponses

elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:03
lorsque je compile avec la ligne en commentaire :


Switching to target: default



Compiling: main.cpp



cc1plus.exe: converting to execution character set: Illegal byte sequence




Process terminated with status 1 (0 minutes, 0 seconds)

avec la ligne active 





--------------------------------------------------------------------------------



Switching to target: default



Compiling: main.cpp



cc1plus.exe: converting to execution character set: Illegal byte sequence



main.cpp:517:1: converting to execution character set: Illegal byte sequence



Process terminated with status 1 (0 minutes, 0 seconds)
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:12
Problème d'incompatibilité entre compilateurs ! je ne vois pas ce qu'il ne comprend pas dans ces instructions. Passez voir tout le bloc en commentaire pour tester (garder le continue) :

      if (pSep == NULL)
      {
         // --- Ligne incorrecte (pas de virgule trouvée)
         /*
         TCHAR szMessage[100];
         swprintf(szMessage,TEXT("La ligne %d du dictionnaire est incorrecte\n(pas de virgule séparatrice)"),iCompteur);
         MessageBox(hFenetre,szMessage,TEXT("Erreur"),MB_OK | MB_ICONERROR);
         */
         continue;
      }

Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:15
toujours la meme erreur :

cc1plus.exe: converting to execution character set: Illegal byte sequence

quel compilateur utiliser vous?
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:18
Visual C++ 6.0 et vous ?

Jean-François
0

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

Posez votre question
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:20
code blocks et dev c++

mais je ne compren pas j'ai la meme erreur avec les 2
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:23
jai essayé avec visual basic sur le pc d'un ami , impossible d'executer le programe
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:24
Et en mettant tout le test en commentaire ?

      /*
      if (pSep == NULL)
      {
         // --- Ligne incorrecte (pas de virgule trouvée)
         TCHAR szMessage[100];
         swprintf(szMessage,TEXT("La ligne %d du dictionnaire est incorrecte\n(pas de virgule séparatrice)"),iCompteur);
         MessageBox(hFenetre,szMessage,TEXT("Erreur"),MB_OK | MB_ICONERROR);
         continue;
      }
      */

Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:27
toujours la meme chose ...
n'y a t il pas un moyen plus simple pour supprimer tous les controle inutile...
étant donner que je ferait le test lors de la présentation je sais quel mots s'y trouvent etc...

en tout cas merci de vous donner tant de mal
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:29
Heureusement !!! Si VisualBasic se met à compiler du C/C++ où allons nous ?

Ce qui est étrange c'est que le passage en commentaire ne change rien alors que c'est la ligne 517 (le swprintf()) qu'il ne veut pas.

Jean-François
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:30
En plaçant tout le test if (pSep ==NULL {...} en commentaire, il n'y a plus de contrôle !

Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:31
oui excusez moi je voulez dire visual C++ ... j'ai bien fait nouveau projet win32 etc...
copie colle le script, copie le dictionnaire, compile et lors de l'execution il ne veu pa
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:38
En cherchant sur Google "dev blocks" et "illegal byte sequence" je suis tombé sur un forum où quelqu'un a eu ce genre de problème qui pourrait être dû aux caractères accentués. Il n'y en avait encore aucun depuis le début du projet ! et maintenant il y en a dans 2 des 3 messages de la fonction Traduire().

Si vous les supprimez (trouvé --> trouve et séparatrice --> separatrice) ça donne quoi ?

Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:50
meme si je supprime les accents toujours le meme probleme...
vraiment bizarre
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:54
et pour les accents il y en avait déja dans "traité"  "précedente" ....
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:56
Et en plaçant tout le contenu de la fonction Traduire() en commentaire ?

void Traduire
(
   HWND hFenetre // E:handle de la fenêtre
)
{
   /*
   // --- Copier la saisie dans le texte en sortie
   // --- pour les cas d'erreur
   wcscpy(szSortie,szEntree);



   ...



   // --- Fermer le fichier dictionnaire
   fclose(pf);



   */
}











Jean-François
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
27 mars 2008 à 23:57
Des accents utiles ! c'est à dire dans les chaînes de caractères traitées par le programme, pas ceux des commentaires du fichier source.

Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
27 mars 2008 à 23:58
quand je mets toute la partie de "parcourir le dictionnaire"
jusqu'a "fpclose" cela  ne marche toujours pas
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
28 mars 2008 à 00:01
oui avec la dernier solution (toute la fonction traduire),le projet s'execute
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
28 mars 2008 à 00:21
Je viens d'installer CodeBlocks et je regarde de plus près !

Jean-François
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009
28 mars 2008 à 00:23
merci beaucoup, je parcours les forums depuis touta l'heure et rine n'y fait
0
Rejoignez-nous