IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

TURBO C Souris


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 294
    Points : 59
    Points
    59
    Par défaut [Turbo C] Souris
    Bonjour,

    Je developpe avec turbo C, dans l'execution de mon programme j'ai un affichage

    F1_Ajouter F2_Supprimmer F3_Quitter

    je veux lorsque je clique sur le mot Ajouter avec la souris il fait appel au fonction ajout,

    quel est l'intsruction que je dois ecrire???


    2*
    je veux declarer un tableau dans chaque case est une chaine de caracteres?? est ce que ceci est fusable ou pas ??

    Merci pour vous aide

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Pour la souris sous DOS il faut utiliser l'interruption 33h (une petite recherche sur google et tu trouveras ce que tu cherches).

    Pour faire un tableau de chaînes c'est facile :
    Cela crée un tableau de 10 chaînes de caractères pouvant contenir 100 caractères au plus chacune.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 294
    Points : 59
    Points
    59
    Par défaut
    c'est une declaration d'une matrice mais moi je veux que chaque case de tableau T(char T[100]) est une chaine de caractere pas un seul caractere


    et pour la premiere question il n'a y a pas personne qui peut m'aider

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par ALIAS200 Voir le message
    c'est une declaration d'une matrice mais moi je veux que chaque case de tableau T(char T[100]) est une chaine de caractere pas un seul caractere

    100 chaînes de caractères, chaque case du tableau

  5. #5
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    Salut,

    voici une exemple d'initialisation de la souris avec Assembleur :
    http://pascal.developpez.com/exercic...ge=Sect12#asm4

  6. #6
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    un autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    // I N C L U D E S //////////////////////////////////////////////////////////
    #include <stdio.h>
    #include <conio.h>
     
    // P R O T O T Y P E S //////////////////////////////////////////////////////
    void setscreen_graphic (void);
    void setscreen_text (void);
    void mouse_on (void);
    void mouse_off (void);
     
    // M A I N //////////////////////////////////////////////////////////////////
    void main (void)
    {
       setscreen_graphic ();
       mouse_on ();
       getch ();
       setscreen_text ();
       mouse_off ();
    }
     
    // S E T   S C R E E N   G R A P H I C //////////////////////////////////////
    void setscreen_graphic (void)
    {
       asm mov ax, 13h 
       asm int 10h
    }
     
    // S E T   S C R E E N   T E X T ////////////////////////////////////////////
    void setscreen_text (void)
    {
       asm mov ax, 3h 
       asm int 10h
    }
     
    // M O U S E   O N //////////////////////////////////////////////////////////
    void mouse_on (void)
    {
       asm mov ax,01h 
       asm int 33 h
    }
     
    // M O U S E   O F F ////////////////////////////////////////////////////////
    void mouse_off (void)
    {
       asm mov ax, 02h 
       asm int 33 h
    }

  7. #7
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Si un tableau de caractères se déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CHAINE t[10]; /* tableau de 10 chaines de caracteres */
    Si CHAINE désigne un tableau pouvant contenir 100 caractères au plus (je rappelle qu'une chaîne est un tableau de caractères, sinon relis ton cours de C), alors cette déclaration devient :
    Et :
    Ne déclare pas un tableau de 10 chaînes de caractères mais un tableau de 10 pointeurs qu'on pourra utiliser pour pointer sur des chaînes de caractères.

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Points : 294
    Points
    294
    Par défaut
    Pour ta déclaration de tableau de chaîne tu peux la déclarer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Char **t ;
    Char *t[20] ;
    Char t[20][200] ;
    Et pour la souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    #include<conio.h>
     #include<stdio.h>
     #include<stdlib.h>
     #include<graphics.h>
     #include<dos.h>
    void graph()
     {
     int gdriver=DETECT , gmode, errorcode;
     initgraph(&gdriver, &gmode, "");
     errorcode = graphresult();
     if (errorcode != grOk)
     {
     printf("Graphics error: %s\n", grapherrormsg(errorcode));
     printf("Press any key to halt:");
     getch();
     exit(1);
     }
     }
     
     
     
     
    void souris()
     {
     _AX=0; geninterrupt(0x33); //initialisation
     
     _AX=7; // nø de l'interruption
     _CX=5; _DX=634; // Xmin & Xmax
     geninterrupt(0x33);
     
     _AX=8; // nø de l'interruption
     _CX=5; _DX=475; // Ymin & Ymax
     geninterrupt(0x33);
     
     _AX=1; geninterrupt(0x33); //Affichage du curseur
     
     _AX=4; //nø de l'interruption
     _CX=78; //X initiale du curseur
     _DX=100; //Y initiale du curseur
     geninterrupt(0x33);
     do
     {
     do
     { _AX=3; //‚coute permanente d'un ‚ventuel click
     geninterrupt(0x33);
     }while(_BX==0);
     if(_BX==1) //click sur le boutton gauche
     {
     if((600<_CX&&_CX<620)&&(20<_DX&&_DX<30)) {closegraph();exit(0);}
     if((200<_CX&&_CX<500)&&(100<_DX&&_DX<140)) { cleardevice();
     setbkcolor(5);
     delay(20);
      setbkcolor(2);
      cleardevice();
     getch();
     exit(0);}
     }
     }while(1);
     }
     
     void main()
     {
     graph();setbkcolor(1); setfillstyle(5,2);
     setcolor(10);
     settextstyle(4,0,6);
     outtextxy(20,20,"   DOT-_-NET");
      setcolor(RED);
     settextstyle(0,0,0);
     bar3d(600,20,610,30,3,1);
     outtextxy(600,20,"X");
      setfillstyle(8,9);
      settextstyle(1,0,0);
     bar3d(200, 100, 500,140, 10, 4);
      setcolor(YELLOW);
     outtextxy(250,100,"Developpez");
     souris();
     }

  9. #9
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Melem Voir le message
    Ne déclare pas un tableau de 10 chaînes de caractères mais un tableau de 10 pointeurs qu'on pourra utiliser pour pointer sur des chaînes de caractères.
    chipoteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char * t[10];
    for(int i=0;i<10;i++)
       t[i]="une chaine de caractere"; 
      /* ou alors */
    //  t[i]=strdup("une chaine de caractere");
    C'est un tableau de pointeur sur chaîne ok nuance.

  10. #10
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Oui c'est un tableau de pointeur je suis d'accord où veux-tu en venir? Un char * ca permet de pointer vers une chaîne (plus précisément vers le premier caractère d'une chaîne). Ce n'est pas une chaîne. "Bonjour" est une chaîne. Son type est char [8] et non char *.

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Points : 294
    Points
    294
    Par défaut
    Citation Envoyé par hegros Voir le message
    chipoteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char * t[10];
    for(int i=0;i<10;i++)
       t[i]="une chaine de caractere"; 
      /* ou alors */
    //  t[i]=strdup("une chaine de caractere");
    C'est un tableau de pointeur sur chaîne ok nuance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<10;i++)
    strcpy(t[i],"la chaine");

  12. #12
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Tout d'abord c'est strcpy et non elle ne s'utilise pas du tout comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * p;
    strcpy(p, "machin chose");
    est l'une des pires choses que l'on puisse écrire en C. p est un pointeur vers un (un, c'est-à-dire : 1) caractère. Pour copier "machin truc" il faut un tableau de caractères pas un seul caractère.

  13. #13
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Points : 294
    Points
    294
    Par défaut
    Citation Envoyé par Melem Voir le message
    Tout d'abord c'est strcpy et non elle ne s'utilise pas du tout comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * p;
    strcpy(p, "machin chose");
    est l'une des pires choses que l'on puisse écrire en C. p est un pointeur vers un (un, c'est-à-dire : 1) caractère. Pour copier "machin truc" il faut un tableau de caractères pas un seul caractère.
    Ça marche pour le char * p ; et pour le char p[20] ;
    En plus la meilleur façon de copier une chaîne dans une autre c’est d’appeler cette fonction

  14. #14
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    Citation Envoyé par dot-_-net Voir le message
    Ça marche pour le char * p ; et pour le char p[20] ;
    En plus la meilleur façon de copier une chaîne dans une autre c’est d’appeler cette fonction
    mais ça marche pas pour une déclaration char *p;
    il faut allouer de la memoire avant
    par contre, elle marche pour p[20] sans la segementation fault pour cette chaine de caractère.

  15. #15
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par dot-_-net Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<10;i++)
    strcopy(t[i],"la chaine");
    tu ne peux pas faire cela car t[i] est un pointeur sur char c'est dans la définition pourtant

    char * : pointeur sur char
    t[100] : tableau de 100

    soit un tableau de 100 pointeurs sur char, je dis que c'est 100 chaînes de caractère oui après tout "bonjour" est de type char* et c'est une chaîne. on peut faire t[i]="bonjour"

    par contre strcpy a besoin comme source (le premier paramètre) de la place mémoire disponible pour faire la copie ce qui n'est pas le cas ici (autant utiliser strdup)

  16. #16
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 294
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par dot-_-net Voir le message
    Et pour la souris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    #include<conio.h>
     #include<stdio.h>
     #include<stdlib.h>
     #include<graphics.h>
     #include<dos.h>
    void graph()
     {
     int gdriver=DETECT , gmode, errorcode;
     initgraph(&gdriver, &gmode, "");
     errorcode = graphresult();
     if (errorcode != grOk)
     {
     printf("Graphics error: %s\n", grapherrormsg(errorcode));
     printf("Press any key to halt:");
     getch();
     exit(1);
     }
     }
     
     
     
     
    void souris()
     {
     _AX=0; geninterrupt(0x33); //initialisation
     
     _AX=7; // nø de l'interruption
     _CX=5; _DX=634; // Xmin & Xmax
     geninterrupt(0x33);
     
     _AX=8; // nø de l'interruption
     _CX=5; _DX=475; // Ymin & Ymax
     geninterrupt(0x33);
     
     _AX=1; geninterrupt(0x33); //Affichage du curseur
     
     _AX=4; //nø de l'interruption
     _CX=78; //X initiale du curseur
     _DX=100; //Y initiale du curseur
     geninterrupt(0x33);
     do
     {
     do
     { _AX=3; //‚coute permanente d'un ‚ventuel click
     geninterrupt(0x33);
     }while(_BX==0);
     if(_BX==1) //click sur le boutton gauche
     {
     if((600<_CX&&_CX<620)&&(20<_DX&&_DX<30)) {closegraph();exit(0);}
     if((200<_CX&&_CX<500)&&(100<_DX&&_DX<140)) { cleardevice();
     setbkcolor(5);
     delay(20);
      setbkcolor(2);
      cleardevice();
     getch();
     exit(0);}
     }
     }while(1);
     }
     
     void main()
     {
     graph();setbkcolor(1); setfillstyle(5,2);
     setcolor(10);
     settextstyle(4,0,6);
     outtextxy(20,20,"   DOT-_-NET");
      setcolor(RED);
     settextstyle(0,0,0);
     bar3d(600,20,610,30,3,1);
     outtextxy(600,20,"X");
      setfillstyle(8,9);
      settextstyle(1,0,0);
     bar3d(200, 100, 500,140, 10, 4);
      setcolor(YELLOW);
     outtextxy(250,100,"Developpez");
     souris();
     }

    Merci pour votre aide
    Mais j'ai essaye ce code et il m'affiche
    graphics error: device driver file not found EGAVGA.BGI
    cet error est du a quoi ??!!!

  17. #17
    Membre actif
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Points : 294
    Points
    294
    Par défaut
    Citation Envoyé par ALIAS200 Voir le message
    Merci pour votre aide
    Mais j'ai essaye ce code et il m'affiche
    graphics error: device driver file not found EGAVGA.BGI
    cet error est du a quoi ??!!!
    Je viens de compilé ce code et il marche peut être que tu n’as pas le répertoire bgi ou bien tu as mal installé ton compilateur C

    Tu travailles avec quel compilateur ??

  18. #18
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 294
    Points : 59
    Points
    59
    Par défaut
    TURBO C++ IDE

  19. #19
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    device driver file not found EGAVGA.BGI signifie que le pilote EGAVGA.BGI (requis pour faire fonctionner le programme) n'a pas été trouvé (ce fichier tu le trouveras dans le répertoire BGI du répertoire dans lequel tu as installé TC). Mets-le dans le même répertoire que ton programme et le problème sera résolu. A lire également la doc de Initgraph, en particulier le rôle du 3ème argument.

  20. #20
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Melem Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * p;
    strcpy(p, "machin chose");
    est l'une des pires choses que l'on puisse écrire en C.
    OK.
    p est un pointeur vers un (un, c'est-à-dire : 1) caractère.
    Euh, non, c'est pire que ça. C'est un pointeur non initialisé. Passer une valeur indéterminée à une fonction invoque un comportement indéterminé.

Discussions similaires

  1. Problème de souris avec Turbo Delphi
    Par LeQuébecois dans le forum Débuter
    Réponses: 1
    Dernier message: 15/12/2007, 20h37
  2. Zoom turbo à la souris
    Par solipas dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/07/2007, 13h18
  3. comment utlisser le souris dans le turbo c 3.0
    Par rare1 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 20/07/2006, 22h08
  4. Comment masquer le curseur de la souris ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/06/2002, 19h54
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo