Transcodage arabe anglais

[Résolu]
Signaler
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
-
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
-
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
A voir également:

64 réponses

Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

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)
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

toujours la meme erreur :

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

quel compilateur utiliser vous?
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Visual C++ 6.0 et vous ?

Jean-François
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

code blocks et dev c++

mais je ne compren pas j'ai la meme erreur avec les 2
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

jai essayé avec visual basic sur le pc d'un ami , impossible d'executer le programe
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

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
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
En plaçant tout le test if (pSep ==NULL {...} en commentaire, il n'y a plus de contrôle !

Jean-François
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

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
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

meme si je supprime les accents toujours le meme probleme...
vraiment bizarre
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

et pour les accents il y en avait déja dans "traité"  "précedente" ....
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
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
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

quand je mets toute la partie de "parcourir le dictionnaire"
jusqu'a "fpclose" cela  ne marche toujours pas
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

oui avec la dernier solution (toute la fonction traduire),le projet s'execute
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Je viens d'installer CodeBlocks et je regarde de plus près !

Jean-François
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009

merci beaucoup, je parcours les forums depuis touta l'heure et rine n'y fait