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 :

Principe du fscanf ? [Débutant(e)]


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut Principe du fscanf ?
    Bonjour,

    J'aimerais récupérer 3 valeurs (X, Y, Z) bien précises dans un fichier. Ces valeurs se situent n'importe où (en mileu de ligne par ex) dans le fichier mais toujours derrière les caractères COM :

    Pour résumer, voici ce que pourrait être mon fichier :
    sdfdsfdssdf fdsfsdfds fdsfdsf fdssdf
    fdsfsdf sd sdfdsfsd COM : X Y Z fdfgdfgdfg gdfgdfg dfgdfg
    dfgdfg

    dans mon prog, j'ai écris notamment ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fscanf (f, "COM : %d %d %d, &X, &Y, &Z);
    printf("X = %d , Y = %d , Z=%d\n", X, Y, Z);
    Résultat :
    - Il me ramène bien les valeurs quand mon fichier commence par COM : X Y Z dffsfg gfdgdf gdff....
    - Il me ramène des 0 dans tous les autres cas de figure.

    Je ne comprends pas bien pourquoi...

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Par défaut
    Citation Envoyé par Sinon
    dans mon prog, j'ai écris notamment ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fscanf (f, "COM : %d %d %d, &X, &Y, &Z);
    printf("X = %d , Y = %d , Z=%d\n", X, Y, Z);
    Résultat :
    - Il me ramène bien les valeurs quand mon fichier commence par COM : X Y Z dffsfg gfdgdf gdff....
    - Il me ramène des 0 dans tous les autres cas de figure.

    Je ne comprends pas bien pourquoi...
    peut être tu as oublié un " dans la premiere ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fscanf (f, "COM : %d %d %d", &X, &Y, &Z);
    printf("X = %d , Y = %d , Z=%d\n", X, Y, Z);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    non, non, c'est une erreur de frappe dans mon message.
    Sans ce " il ne me retournerait jamais rien.

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Sinon
    Résultat :
    - Il me ramène bien les valeurs quand mon fichier commence par COM : X Y Z dffsfg gfdgdf gdff....
    - Il me ramène des 0 dans tous les autres cas de figure.

    Je ne comprends pas bien pourquoi...

    Merci de votre aide
    Parce que c'est le fonctionnement normal de la fonction.

    Ce que tu veux faire c'est parcourir ton fichier, trouver "COM :" et ensuite récupérer les valeurs. Ce n'est donc pas la bonne facon de faire.

    Un algorithme possible serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Lire une ligne du fichier avec fgets
    Regarder si on a une entrée " COM : " avec la fonction strstr
    Si oui, utiliser sscanf, ou encore mieux strtol sur cet endroit pour récupérer la valeur.
    Pour ces 4 fonctions, je te conseille de lire les pages man :
    http://man.developpez.com

    Jc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Merci
    Je pensais que la fonction fscanf permettait de le faire de façon plus simple.

    Je vais tester ton algo...

    Pourrais-tu m'expliquer pourquoi cela ne marche pas avec fscanf ? Pourquoi il me renvoit 0 ?

  6. #6
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Sinon
    Merci
    Je pensais que la fonction fscanf permettait de le faire de façon plus simple.

    Je vais tester ton algo...

    Pourrais-tu m'expliquer pourquoi cela ne marche pas avec fscanf ? Pourquoi il me renvoit 0 ?
    Parce qu'il essaie de comparer ton format avec ce qu'il voit dans le fichier.

    Ainsi,

    sadf asdf asf COM : X Y Z
    ne correspond pas à :

    COM : X Y Z
    Il répond donc par un 0 pour dire, je n'ai rien pu faire.

    Jc

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Ne devrait-il pas scaner la chaine "COM : ......." dans tout le fichier ?
    Qu'importe ce qu'il y a devant. Je lui précise ce qu'il doit trouver derrière.
    C'est comme ça que je l'avais compris. Mais j'ai dû me tromper alors.

  8. #8
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Sinon
    Ne devrait-il pas scaner la chaine "COM : ......." dans tout le fichier ?
    Qu'importe ce qu'il y a devant. Je lui précise ce qu'il doit trouver derrière.
    C'est comme ça que je l'avais compris. Mais j'ai dû me tromper alors.
    De la page man :
    http://man.developpez.com/man3/fscanf.3.php

    L'examen de l'entrée s'arrête dès qu'un caractère d'entrée ne correspond pas à un caractère du format.
    Jc

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Merci !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Je suis un peu largué, fearyourself. Je ne sais pas du tout comment utiliser ton fgets..

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Bon, voici ce que j'ai tapé et qui me semble pourtant correct :
    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
     
    int main(void)
    {
      char buffer[5000];
      float P1, P2;
      FILE *f;
      fp = fopen ("fichier.txt", "r");
     
      while (!feof(fp)) {
        fgets(buffer, 5000, fp);
        sscanf(strstr(buffer, "COM :"), "%f %f", &P1, &P2);
        printf("P1=%f\nP2=%f\n", P1, P2);
        fclose(fp);
      }
     return (0);
    }
    Dev c++ m'indique une fenetre d'erreur (débogage) au lancement du .exe

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    1. Tu ne vérifies pas le retour de fopen().
    2. feof() ne s'emploie pas ainsi (je suis sûr qu'il y a un truc dans la FAQ pur ça, tellement ça revient souvent).
    3. Tu devrais aussi vérifier le retour de sscanf()
    4. Évite les majuscules pour les noms de variables.
    5. strstr() retourne NULL si la chaîne n'est pas trouvée, ça m'étonnerait que sscanf() apprécie.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Expert éminent
    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
    Par défaut
    Citation Envoyé par Sinon
    J'aimerais récupérer 3 valeurs (X, Y, Z) bien précises dans un fichier. Ces valeurs se situent n'importe où (en mileu de ligne par ex) dans le fichier mais toujours derrière les caractères COM :

    Pour résumer, voici ce que pourrait être mon fichier :
    sdfdsfdssdf fdsfsdfds fdsfdsf fdssdf
    fdsfsdf sd sdfdsfsd COM : X Y Z fdfgdfgdfg gdfgdfg dfgdfg
    dfgdfg
    Il faut lire le fichier ligne par ligne, avec fgets(), puis chercher COM avec strstr(), puis analyser la suite, par exemple avec sscanf().

  14. #14
    Expert éminent
    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
    Par défaut
    Citation Envoyé par Sinon
    Je pensais que la fonction fscanf permettait de le faire de façon plus simple.
    <...>
    Pourrais-tu m'expliquer pourquoi cela ne marche pas avec fscanf ? Pourquoi il me renvoit 0 ?
    Peu de gens maitrisent *scanf(), qui n'est une fonction ni pour les débutants, ni même les confirmés. Si tu y tiens, étudie ceci :

    http://xrenault.developpez.com/tutoriels/c/scanf/

    Mais cette famille de fonction attendant une entrée formatée, elle est inadaptée à ton cas qui est tout sauf formaté...

    C'est pour ça que les algos proposés commencent par un recherche de 'synchronisation'.

    Attention, si "COM" est en fin de ligne ou à cheval sur 2 lignes ("C\nOM") ou pareil pour les données, ça ne fonctionnera pas. Il faut peut être traiter caractères par caractères avec un automate d'analyse...

  15. #15
    Expert éminent
    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
    Par défaut
    Citation Envoyé par Sinon
    Bon, voici ce que j'ai tapé et qui me semble pourtant correct :
    Je te conseille d'écrire l'algorithme avant de coder...

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Merci pour les conseils, Emmanuel.

    Les données à lire se trouvent sur une seule et même ligne. Elles se trouvent juste derrière COM : et sont séparées par des espaces.

    Voici mon algo :

    - ouverture du fichier text.txt
    - mettre les lignes du fichier 1 à 1 dans un buffer
    - analyser ce buffer pour repérer l'eventuel "COM :"
    - si pas trouvé : afficher "pas trouvé sur cette ligne"
    - si trouvé : lire les données qui se trouvent après le "COM :"
    - afficher ces valeurs
    - fermer le fichier text.txt

    Je ne maitrise pas encore très bien le feof() ni le strstr().

    Voici le programme. Il y a certainement plusieurs choses qui ne collent pas.

    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
     
    #include<stdio.h>
    #include<string.h>
     
    int main(void)
    {
     char buffer[5000];
     float p1, p2; 
     FILE *fp;
     if ((fp = fopen ("text.txt", "r")) == NULL) printf("Erreur patati patata\n");
     else {
          while (!feof(fp)) {
                fgets(buffer, 5000, fp);
                if (strstr(buffer, "COM :") == NULL) printf("Pas trouve de COM : sur cette ligne\n");
                else {
                     sscanf(buffer, "COM : %f %f", &p1, &p2);
                     printf("P1 = %f\n P2 = %s\n", p1, p2);
                     }
                }
          fclose(fp);
     }
     return (0);
    }

  17. #17
    Expert éminent
    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
    Par défaut
    Citation Envoyé par Sinon
    Les données à lire se trouvent sur une seule et même ligne. Elles se trouvent juste derrière COM : et sont séparées par des espaces.
    OK, ça simplifie.
    Voici mon algo :

    - ouverture du fichier text.txt
    - mettre les lignes du fichier 1 à 1 dans un buffer
    - analyser ce buffer pour repérer l'eventuel "COM :"
    - si pas trouvé : afficher "pas trouvé sur cette ligne"
    - si trouvé : lire les données qui se trouvent après le "COM :"
    - afficher ces valeurs
    - fermer le fichier text.txt
    C'est pas mal. Si tu ne trouves pas, c'est pas la peine de le signaler. Ne traites que les cas où tu trouves, c'est tout.
    • ouvrir le fichier
    • si le fichier est bien ouvert
      • tant que ce n'est pas la fin du fichier
        • lire une ligne dans le fichier
        • chercher "COM" dans la ligne
        • si trouvé :
          • lire les données qui se trouvent après le "COM :"
          • afficher ces valeurs
      • fermer le fichier text.txt


    Refait le code selon ce principe.
    Lit la doc de strstr(). La valeur retournée est intéressante. Ou pourrait la passer à sscanf() pour lui demander d'analyser la suite...

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    Ok, je prends note de tes conseils J'apprends bien plus vide comme ca !
    En tout cas, merci bcp !

    En fait, je ne suis pas du tout à l'aise avec le passage de résultats d'une fonction à l'autre.

    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
     
    #include<stdio.h>
    #include<string.h>
     
    int main(void)
    {
     char buffer[5000];
     char * chaine; 
     float p1, p2; 
     FILE *fp;
     
     if ((fp = fopen ("text.txt", "r")) == NULL) printf("Erreur de fichier\n");
     else {
          while (!feof(fp)) { // pas certain de cette ligne !
                fgets(buffer, 5000, fp);
                if (chaine = strstr(buffer, "COM : ")) == !NULL {
                     sscanf(chaine, "COM : %f %f", &p1, &p2);
                     printf("P1 = %f\n P2 = %s\n", p1, p2);
                }
          }
          fclose(fp);
     }
     return (0);
    }

  19. #19
    Expert éminent
    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
    Par défaut
    Citation Envoyé par Sinon
    En fait, je ne suis pas du tout à l'aise avec le passage de résultats d'une fonction à l'autre.
    Mes remarques :

    Certaines erreurs sont vues par le compilateur :

    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:15: warning: suggest parentheses around assignment used as truth value
    main.c:15: error: syntax error before '==' token
    main.c:15: warning: empty body in an if-statement
    main.c:17: warning: format argument is not a pointer (arg 3)
    main.c: At top level:
    main.c:22: error: syntax error before "return"
    Process terminated with status 1 (0 minutes, 1 seconds)
    2 errors, 3 warnings
    Un meilleur réglage du compilateur permet ça :

    http://emmanuel-delahaye.developpez....tm#cfg_compilo

    Ton code commenté et corrigé (non testé)
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    #include<stdio.h>
    #include<string.h>
     
    int main (void)
    {
       /* -ed-
          char buffer[5000];
          char *chaine;
          float p1, p2;
     
          il est preferable de definir les variables pres de l'endroit ou on
          les utilise. Ca simplifie la lecture et la maintenance.
        */
    /* -ed-
    il vaut mieux eviter de melanger test et affectation surtout dans les if().
    Ca alourdi la lecture inutilement...
       FILE *fp;
       if ((fp = fopen ("text.txt", "r")) == NULL)
    */
       FILE *fp = fopen ("text.txt", "r");
       if (fp == NULL)
     
          printf ("Erreur de fichier\n");
       else
       {
    /* -ed- deplace . C'est pas un peu beaucoup 5000 ? */
          char buffer[256];
    /* -ed-
          while (!feof (fp))
          {                         // pas certain de cette ligne !
             fgets (buffer, 5000, fp);
     
       feof() ne fait pas ce que tu crois. On doit tester la valeur retournee
       par la fonctino de lecture. Par exemple, en cas d'arret de la lecture,
       fgets() retourne NULL. Si on veut connaitre la cause exacte de l'arret
       de la lecture, on peut utiliser feof() et ferror() apres couo, mais
       c'est rarement utile...
     
       Il est utilie ici de combiner la lecture de la ligne avec le test de la
       valeur retournee. En effet, c'esrt en testant la valeur
    */
          while (fgets (buffer, sizeof buffer, fp) != NULL)
          {
    /* -ed-
             if (chaine = strstr (buffer, "COM : "))
                == !NULL
     
    ceci n'est pas tres clair... Je propose
    */
             char *chaine = strstr (buffer, "COM : ");
             if (chaine != NULL)
             {
    /* -ed- deplace. Le choix de float est dscutable. double est plus precis... */
                float p1, p2;
                /* -ed-
                   sscanf (chaine, "COM : %f %f", &p1, &p2);
     
                   il faut tester a partir de la suite de la chaine recherchee.
                   d'autre part, sscanf() peut echouer. Il faut tester la valeur
                   retournee (ici, 2, car on attend 2 conversions).
     
                 */
                int n = sscanf (chaine + strlen ("COM : "), "%f %f", &p1, &p2);
                if (n == 2)
                {
                   /* -ed- Pour un float ou un double, c'est "%f" et non "%s"
                      printf ("P1 = %f\n P2 = %s\n", p1, p2);
                    */
                   printf ("P1 = %f\n P2 = %f\n", p1, p2);
                }
             }
          }
          /* -ed-
             fclose (fp);
     
             afin de faciliter la mise au point des gros programmes, il est
             recommande de forcer un pointeur invalide a NULL.
           */
          fclose (fp), fp = NULL;
       }
       /* -ed-
          return (0);
          
          return est une instruction, pas une fonction. 
          Les parentheses snt inutiles
        */
       return 0;
    }

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 54
    Par défaut
    C'est vrai que c'est plus clair et, par conséquent, plus compréhensible.
    Je tacherai de m'en inspirer pour mes futurs progs.

    Je vais reprendre ton algo depuis le début en tachant de bien tout saisir...

    Je te tiens au courant.
    Merci beaucoup en tout cas !

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/02/2007, 12h18
  2. [HARDWARE] Principe de fonctionnement d'un touchpad
    Par Cyspak dans le forum Ordinateurs
    Réponses: 4
    Dernier message: 26/12/2003, 01h47
  3. barre de menu principal
    Par norfelt dans le forum IHM
    Réponses: 10
    Dernier message: 27/10/2003, 11h37
  4. projet suivant le principe de MSN
    Par Walm dans le forum Développement
    Réponses: 2
    Dernier message: 30/09/2003, 12h36
  5. Directive, principe delphi
    Par Arrown dans le forum Débuter
    Réponses: 3
    Dernier message: 09/09/2003, 18h32

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