Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/07/2011, à 18:50

JPlaroche

Ncurses Ncursew C++ Pas d'accent (détail avec source )[resolu]

bonjour,

je suis développeur sur AS400  et c++ windows

j'essaye de faire sur Linux une chose tres simple  un petit programme en c++ GCC   (version ubuntu 11.04)

je ne peut sortir sur ecran   "é"   = code clavier 169 

mon test

j'utilise codeblock 

j'ai un raccourci mais cela est la même chose      /usr/bin/xterm -geometry 132x40 -fa "Monospace" -fs 12 -lc /home/jpmf/P5250/key/bin/Release/key

je compile avec -lncurses  ou -lncursew  avec leurs lib respective
______________________________________________________________________________________________________________________

#include <stdlib.h>
#include <ctype.h>
#include <ncurses.h>

#include <string.h>

#include <locale.h>     

#include <signal.h>
 FILE * pFile;
#ifndef SIGNAL_HANDLER_H_
#define SIGNAL_HANDLER_H_

void signal_handler(int sig) {

    switch(sig) {
        case SIGHUP:
                            signal(SIGHUP, SIG_IGN);
                            fprintf (pFile,"SIGHUP\n"); // pour debug rtv signal
                            exit(EXIT_SUCCESS);
            break;
        default:
      fprintf (pFile,"defautl   %d\n",sig); // rtv autre signal ne doit jamais passer par là

    }
}

#endif

using namespace std;

void CHG_TITRE(const char * _cTITRE) { printf("%c]0;%s%c", '\033', _cTITRE, '\007');}
int main()
{
    WINDOW * mainwin;
 int ch;

       // Setup signal handling before we start
    signal(SIGHUP, signal_handler); // contrôle du ALT F4 ou click sur la croix


/// dans le terminal  prénom = prénom 
/// test différent pour   é    ne fonctionne pas    code clavier 169 et pour tous les caractères speciaux 

/// sans setlocale  1 car  une sorte de ?  c

// avec setlocale    M-)

   
//setlocale(LC_CTYPE,"fr_FR.utf8");
//setlocale(LC_CTYPE,"fr_FR");
//setlocale(LC_ALL,"");



    if ( (mainwin = initscr()) == NULL ) {
    fprintf(stderr, "Error initialisation ncurses.\n");
    exit(EXIT_FAILURE);
    }

  pFile= fopen ("/home/adam/key/myfile.txt","w+");

    CHG_TITRE("TITRE_CONSOLE");

   cbreak();
   noecho();                   /*  Turn off key echoing                 */
   keypad(mainwin, TRUE);     /*  Enable the keypad for non-char keys  */


    /*  Print a prompt and refresh() the screen  */

    mvaddstr(3, 10, "Press a key ('F1' to quit)...");
    mvprintw(4, 10, "You pressed: ");
    refresh();

     while((ch = getch()))
    {
        switch(ch)
        {
            case KEY_F(1):
                            printw("Press KEY_CLOSE to exit");
                            exit(0);
                            break;
            default:


                         //   if(isprint(ch)) prinf(c,"%c,ch)  si non imprimable pas de sortie ecran
                                mvprintw(5, 30," num teste      ");
                                mvprintw(5, 30," num teste %d",ch);
                                mvprintw(6, 30," val teste %c",ch);
                                printw(" --- teste %4x",ch);

                            refresh();
                            break;
        }
    }
  fclose (pFile);
    return EXIT_SUCCESS;
}

__________________________________________________________________________________________________________________________

impossible de sortir le é è à etc.........      voilà 4 jours de  10h        40h   que je suis dessus 
j'ai lu beaucoup mais je reste là sur ma fin   au point que je me dis que je dois retourner développer sur windows
je ne parle pas de mes tests avec CDK qui est plein de beug mais là je peut recompiler la lib et la debeuger

pourquoi je veux faire du ncurses    parce que j'ai des sources 5250 mode caractère que je peut récupérer facilement convertir

pouriez m'aidez

ps( s'abstenir commentaire  du genre retourne sur windows .ou vas faire du graphique comme j'ai vus beaucoup ......)

mon env xterm

____________________________________________________________________________________________________________
ORBIT_SOCKETDIR=/tmp/orbit-xxxxxxxxxxxxxxxxx
SSH_AGENT_PID=1406
TERM=xterm
SHELL=/bin/bash
XDG_SESSION_COOKIE=fd5706bf1e04e119a63259c500000006-1310141899.770224-2077904104
WINDOWID=71303206
GNOME_KEYRING_CONTROL=/tmp/keyring-NwEKf1
GTK_MODULES=canberra-gtk-module
USER=jpmf
SSH_AUTH_SOCK=/tmp/keyring-NwEKf1/ssh
SESSION_MANAGER=local/HORUS:@/tmp/.ICE-unix/1373,unix/HORUS:/tmp/.ICE-unix/1373
USERNAME=jpmf
DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
DESKTOP_SESSION=gnome
PWD=/home/jpmf
GDM_KEYBOARD_LAYOUT=fr    oss
GNOME_KEYRING_PID=1354
LANG=fr_FR.UTF-8
GDM_LANG=fr_FR
MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
UBUNTU_MENUPROXY=libappmenu.so
COMPIZ_CONFIG_PROFILE=ubuntu
GDMSESSION=gnome
SHLVL=1
HOME=xxxxxxxxxxxxxxxxx
LANGUAGE=fr_FR:en
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=xxxxxxxxxxxxxxxx
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Ny8U2MNxag,guid=44c5500ce15a1e8a01d9257900000019
WINDOWPATH=7
DISPLAY=:0
COLORTERM=gnome-terminal
XAUTHORITY=/var/run/gdm/auth-for-jpmf-hr3UTp/database
_=/usr/bin/env

_____________________________________________________________________________________________________________

Dernière modification par JPlaroche (Le 08/07/2011, à 22:44)


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne

#2 Le 08/07/2011, à 22:42

JPlaroche

Re : Ncurses Ncursew C++ Pas d'accent (détail avec source )[resolu]

bon j'ai trouvé

mais vraiment pas idées de ce que cela peut coûté de pas mettre explicitement certaine chose

de linuxfr.org source
Il faut que tu compiles en rajoutant l'option -D_XOPEN_SOURCE_EXTENDED, car le support des wchar n'est pas standard, c'est une "nouveauté" de X/Open Unix.
ne pas oublier -lncursesw  et libcursesw.a   

UTF-8  vraiment pas une mince affaire     ps(ne pas oublier d'activer la setlocale(LC_ALL,"")

merci a ceux qui on lue.

dommage ça fait plusieurs fois que pas de réponse

eh comme j'aime pas laisser une demande sans réponse .......

@bientôt


ok option de compile

g++ -pedantic-errors -pedantic -Wextra -Wall -fexceptions -fpermissive -D_XOPEN_SOURCE_EXTENDED  -fexpensive-optimizations -O2 -D__RELEASE__  -D_XOPEN_SOURCE_EXTENDED   -I/usr/lib -I/usr/include/ncursesw -I/home/jpmf/wx_lib  -c /home/jpmf/P5250/key/main.cpp -o obj/Release/main.o
g++ -L/usr/include -L/usr/include/ncursesw -L/usr/include/cdk -L/home/jpmf/wx_lib/Kompex  -o ../Release/key obj/Release/main.o   -s -lncursesw -lformw -lpanelw -lmenuw -D -enable-ext-colors  /usr/lib/x86_64-linux-gnu/libncursesw.a

Dernière modification par JPlaroche (Le 14/11/2012, à 22:46)


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne

#3 Le 08/07/2011, à 23:31

HP

Re : Ncurses Ncursew C++ Pas d'accent (détail avec source )[resolu]

Je sais pas… mais chez moi le code ne compile même pas…
J'ai essayé avec gcc et g++, dans le doute, parce que ça ressemble autant à du C qu'à du C++
La prochaine fois, si tu veux de l'aide, donne au moins un code qui compile, ou une version simplifiée permettant de mettre en exergue le souci… ça peut aider.


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#4 Le 09/07/2011, à 11:16

JPlaroche

Re : Ncurses Ncursew C++ Pas d'accent (détail avec source )[resolu]

bonjour,
regarde ce que j'ai écris

j'essaye de faire sur Linux une chose tres simple  un petit programme en        c++    GCC   (version ubuntu 11.04) 
---------------------------------------------------------------------------------------------------------------------------------------------------------
j'ai déposé le code 
il est très simple     ce compile sur linux avec codeblock mais aussi avec GCC  en dur    il ne faut pas oublier d'avoir linké la lib lncursew  et de faire comme j'ai expliqué.
pourquoi cela ne marchait pas d'autre part je veux dire que bien souvent quand il y a des changement (hélas le défaut du libre on ce casse bien la tête pour trouvé  et apporté) la doc n'ai pas mise à jour 

quand au C ou C++   c'est du C en vue de devenir une fois réglé les problèmes de base d C++ avec une classe pour accueillir un petit framework car CDK ne fonctionne pas,   d'ailleurs je ne sais pas comment signaler cela il est très clair que le fameux CDK très connu dans ce domaine pour l'utilisation de ncurses ne fonctionne plus depuis les mise ajour de posix Xterm qui fonctionne en UTF8  d' ou ncursesw. Il y a bien sur le web  une tentative de passage CDKW  mais je ne sais pas si Ubuntu la mettra dans les PPA  par contre il doit signaler que ce n'est plus compatible aujourd'hui. sauf si tu te fabrique ton propre terminal.......

Rappel Ncurses doit être vue comme l’écran vert d'IBM  une façon de faire des applications très légère compatible Unix-Linux MS et depuis peut être un driver avec l'AS400. Une gestion d'écran ne prend que quelques Ko  exemple gestion fichiers clients,  j'ai encore des books de 1985 avec l’interruption INT86   qui permettait de faire un screen designer en "C" mode caractère en moins 10 mo tout compris, j'ai bien l'intention avec une vrais Classe jouer avec cela et refaire la même chose et ce même utilitaire pour servir à faire des listes PDF car le principe est le même on travaille à la ligne colonne et la maintenance sans trouve très alléger. 

quand je travail sur AS400 il me faut moins de 10mn pour faire un ensemble d'écran avec SDA ceci permettant d'être lier avec une base de donnée au travers d'un programme  cela s'appelle OPDP  en simple partage d'accès des objets le constituant.avec une maintenance déconcertante.

voilà ce que je veux faire mais bien-sur pas avec la même ampleur....................  je ne suis pas IBM  lol  je suis seul sur ce projet "j'y vas tranquillement" ....

@bientôt


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne

#5 Le 11/11/2012, à 03:58

JPlaroche

Re : Ncurses Ncursew C++ Pas d'accent (détail avec source )[resolu]

pour que cela fonctionne parfaitement
j'ai utilisé un programme qui je le souhaite vous facilite la tache pour les contrôles de signaux
wxwidgets cool



console.h

/***************************************************************
 * Name:      CONSOLEApp.h
 * Purpose:   Defines Application Class
 * Author:    JPL 
 * Created:   2011-07-14
 * Copyright: JPL (http://www.ombrebleu.com)
 * License:
 **************************************************************/

#ifndef CONSOLEAPP_H
#define CONSOLEAPP_H

#include <wx/app.h>
#include <wx/cmdline.h>

#include <wx/string.h>
class CONSOLEApp : public wxApp
{
    public:
        virtual bool OnInit();

   // wxCmdLineParser parser(int argc,char **argv);;
};

#endif // CONSOLEAPP_H

console.cpp

/***************************************************************
 * Name:      CONSOLEApp.cpp
 * Purpose:   Code for Application Class
 * Author:    JPL (laroche.jeanpierre@gmail.com)
 * Created:   2011-07-14
 * Copyright: JPL (http://www.ombrebleu.com)
 * License:
 **************************************************************/

#ifdef WX_PRECOMP
#include "wx_pch.h"
#endif

#ifdef __BORLANDC__
#pragma hdrstop
#endif //__BORLANDC__

#include "CONSOLEApp.h"
#define _U(x) wxString((x),wxConvUTF8)

IMPLEMENT_APP(CONSOLEApp);

bool CONSOLEApp::OnInit()
{

    /// On initialise le wxCmdLineParser avec les valeurs de la ligne de commande
    wxCmdLineParser parser(argc,argv);
    /// On lui indique quelles sont les commandes disponibles

    /// La commande "-h" ou "--help" et sa description
    parser.AddSwitch(_T('h'),_T("help"),_T("Afficher cette aide"));

    /// Ensuite, une option de type "string" : "-p" ou "--path"
    parser.AddOption(_T("p"),_T("path"),_T("Le chemin ou ce trouve le programme"),wxCMD_LINE_VAL_STRING);
    /// Ensuite, une option de type "string" : "-n" ou "--name"
    parser.AddOption(_T("n"),_T("name"),_T("Nom du Programmer à ouvrir"),wxCMD_LINE_VAL_STRING);

    /// Maintenant, on demande le traitement de la ligne de commande
    /// le paramètre false sert à ne pas afficher tout de suite les erreurs
    bool bRes=(parser.Parse(false)==0);
    /// S'il y avait des erreurs, on affiche l'aide et on sort
    if (bRes==false)
    {
        parser.Usage();
        exit (EXIT_SUCCESS);
    }

    /// Pour récupérer la valeur du paramètre "path" :
    wxString sPath=_T("");
    if (false == parser.Found(_T("p"),&sPath))
    {
        parser.Usage();
        exit (EXIT_SUCCESS);
    }

    /// Pour récupérer la valeur du paramètre "name" :
    wxString sName=_T("");
    if (false == parser.Found(_T("n"),&sName))
    {
        parser.Usage();
        exit (EXIT_SUCCESS);
    }

    wxString sCmd;

    /// la constante de definition xterm  -p "/home/jpmf/P5250/key/bin/Release/" -n key
   /// pour tester avec code block 
   // /usr/bin/xterm -geometry 132x41+80+50 -fa 'Monospace' -fs 12  -bg DarkSlateGray -fg white -lc -e 


 
    sCmd = wxT("/usr/bin/xterm -geometry 132x41+80+50 -fa 'Monospace' -fs 12  -bg DarkSlateGray -fg white -lc "+ sPath + sName) ;

    wxExecute(sCmd );

exit (EXIT_SUCCESS);

return true;
}

merci a ceux qui mon aidé


maitenant  alt-f4  est intercepté ctrl-C et la crois de la fenêtre   bien-sur dans l'exemple j’enlève     exit(EXIT_SUCCESS); de sighup   


Attention il faut mainteant que votre PROG ne soi pas beuguer  sinon plus alt-f4


option de compile

g++ -pedantic-errors -pedantic -Wextra -Wall -fexceptions -fpermissive -D_XOPEN_SOURCE_EXTENDED  -fexpensive-optimizations -O2 -D__RELEASE__  -D_XOPEN_SOURCE_EXTENDED   -I/usr/lib -I/usr/include/ncursesw -I/home/jpmf/wx_lib  -c /home/jpmf/P5250/key/main.cpp -o obj/Release/main.o
g++ -L/usr/include -L/usr/include/ncursesw -L/usr/include/cdk -L/home/jpmf/wx_lib/Kompex  -o ../Release/key obj/Release/main.o   -s -lncursesw -lformw -lpanelw -lmenuw -D -enable-ext-colors  /usr/lib/x86_64-linux-gnu/libncursesw.a

Dernière modification par JPlaroche (Le 14/11/2012, à 22:48)


depuis 2004 avec Ubuntu
depuis 1976 informaticien   Mon site plein d'information pour les programmeurs   http://www.ombrebleu.com

Hors ligne