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 :

[C/C++] petit problème de tableau


Sujet :

C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut [C/C++] petit problème de tableau
    salut,
    je suis en train de creer un prog en c/c++ et j'ai un problemme au niveau de l'execution. je ne vous explique pas le but du projet ni la signification des variables c'est trop long...
    je vous montre mon code, ce n'est que le debut du projet:
    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    struct Couleur
    {
        int r,g,b;
        SDL_Surface *rectangle;
    };
     
    struct Pixel
    {
        int no_couleur;
        int est_physique;
    };
     
    int main(int argc, char *argv[])
    {
        //initialisation du tableau de couleurs
        Couleur couleurs[100];
        for(int i=0;i<100;i++){
                couleurs[i].r=-1;
                couleurs[i].g=-1;
                couleurs[i].b=-1;
                couleurs[i].rectangle=NULL;
        }
     
        //initialisation du tableau de pixels ( le problemme est ici!!! )
        Pixel pixels[800][600];
        for(int i=0;i<800;i++){
                for(int j=0;j<600;j++){
                        (pixels[i][j]).no_couleur=-1;
                        (pixels[i][j]).est_physique=0;
                }
        }
     
        //ecriture dans un fichier pour tester si les valeurs ont été bien ecrite ( c'est juste un test ça ne restera pas )
        FILE* fichier = NULL;
        fichier = fopen("testvar.txt", "w");
        for(int i=0;i<800;i++){
                for(int j=0;j<60;j++){
                        fprintf(fichier,"%d,%d\n",(pixels[i][j]).no_couleur,(pixels[i][j]).est_physique);
                }
        }
        fclose(fichier);
     
    }
    le problemme est ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        //initialisation du tableau de pixels
        Pixel pixels[800][600];
        for(int i=0;i<800;i++){
                for(int j=0;j<600;j++){
                        (pixels[i][j]).no_couleur=-1;
                        (pixels[i][j]).est_physique=0;
                }
        }
    je creer un tableau de pixels de 800 par 600. tout compile parfaitement mais au moment de l'execution, ça plante!
    j'ai testé avec un tableau de pixels de 800 par 60 et la ça ne plante plus!
    j'ai aussi testé avec un tableau d'entier de 800 par 600 et pareil ça ne plante plus.

    je cherche a savoir pourquoi ça plante, p-e un problemme de memoire? de taille du tableau?

    merci de vos reponses

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Je ne suis pas sûr mais tu as déclaré statiquement un tableau de 800*600 contenant une structure.

    As tu essayé d'allouer dynamiquement ton tableau de pixels ?

    De plus je te conseille de mettre des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define WIDTH_SIZE 800
    #define HEIGHT_SIZE 600
    C'est plus facile pour changer ses valeurs par la suite plutot que de tout réécrire dans le code !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Pas de #define pour des constantes en C++. C'est villain et inutile.

    En revanche, pour ce qui est de la cause première je pense qu'effectivement allouer 800x600 élément sur la pile en est probablement la source.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Pas de #define mais il code en C/C++ car dans ce cas si il fait que du C++ je lui interdirait aussi les struct et lui conseillerais de faire des classes avec des constructeurs par défaut et de jolies données membres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Class Pixels
    {
        public:
        Pixels();
     
        int mGetNoCouleur();
        int mGetIsPhysical();
     
    private:
         int no_couleur;
         int est_physique;
    };
    Et je ferais une classe Ecran qui contiendrait des pixels ... 800*600 par exemple

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Tu explose royalement ta pile. Par défaut, sous windows, je crois qu'elle est à 1MB et tu en demande 800x600x8=3 840 000!
    Solution pas propre: /STACK:4000000 comme option de link.
    Meilleur solution: new.

    Plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define WIDTH_SIZE 800
    #define HEIGHT_SIZE 600
    en C++, préférer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static const unsigned int g_uiWidth;
    static const unsigned int g_uiHeight;
    voire même encapsulé:
    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
     
    struct stTailleEcran
    {
    static const stTailleEcran g_TailleEcran;
     
    const unsigned int Width;
    const unsigned int Height;
     
    private:
    stTailleEcran()
    :Width(800),Height(600)
    {}
    stTailleEcran(const stTailleEcran&):Width(800),Height(600){}
     
    }; 
    const stTailleEcran stTailleEcran::g_TailleEcran;

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    effectivement, a terme j'utiliserai des classes, pour le moment j'utilise des struct car je ne maitrise pas encore tout le c++ ( comme les classes par exemples ), ce programme est juste un "brouillon" je n'ai pas besoin qu'il soit codé a la perfection, il servira surtout de base pour une autre partie du projet et sera refait.

    donc le problemme vien de la pile, new n'utilise pas la pile??

    si je fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
        //initialisation du tableau de pixels
        Pixel *pixels = NULL;
        pixels = new Pixel[WIDTH_SIZE][HEIGHT_SIZE];
        for(int i=0;i<WIDTH_SIZE;i++){
                for(int j=0;j<HEIGHT_SIZE;j++){
                        (pixels[i][j]).no_couleur=-1;
                        (pixels[i][j]).est_physique=0;
                }
        }
    (il y a peut etre des erreur?)
    il commence a m'insulter:
    cannot convert `Pixel (*)[600]' to `Pixel*' in assignment
    no match for 'operator[]' in '*((+(((unsigned int)i) * 8u)) + pixels)[j]'
    ... ect

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    new est utilisé quand tu veux instancier une classe. Or Pixels est une structure, tu doit donc utiliser la fonction malloc().

    Déclare un Pixels** et regarde cela :http://www.developpez.net/forums/d28...sation-malloc/

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    ok, je voi un peut mieu comment faire maintenant!

    si je fait comme johnalias110, ça donne ça:
    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
     
     
        //initialisation du tableau de pixels
        Pixel ** pixels = NULL;
        pixels = malloc (WIDTH_SIZE * sizeof(Pixel *));
        if (pixels != NULL){
            for (int i=0; i<WIDTH_SIZE; i++){
                pixels[i] = malloc (HEIGHT_SIZE * sizeof(Pixel));
            }
        }
        for(int i=0;i<WIDTH_SIZE;i++){
                for(int j=0;j<HEIGHT_SIZE;j++){
                        (pixels[i][j]).no_couleur=-1;
                        (pixels[i][j]).est_physique=0;
                }
        }
    quand je compile ça me dit ça:
    invalid conversion from `void*' to `Pixel**'
    j'ai oublier quelque chose?

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    quand je compile ça me dit ça:
    invalid conversion from `void*' to `Pixel**'
    Il faut "caster" ou transtyper malloc en mettant (Pixel **) devant malloc.


    Je n'arrive pas à comprendre ce que tu veux faire cela semble vraiment lourd comme méthode.
    Avec SDL tu as des méthodes pour lire et écrire directement dans une SDL surface.
    Ou veux-tu en venir ?

    Citation Envoyé par CSIE_Angel#5 Voir le message
    new est utilisé quand tu veux instancier une classe. Or Pixels est une structure, tu doit donc utiliser la fonction malloc().
    je viens de tester sous Visual C++6 et une structure peut être allouée dynamiquement aussi avec new().

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    SDL me permet d'afficher des surfaces avec une couleur de fond ou une image, mais moi j'ai besoin de pouvoir afficher les pixels 1 par 1 ( c'est une peu comme si je decomposait l'image en plein de petites images de la taille d'un pixel ) et que chaque pixels soit associé a une valeur ( a savoir est_phusique) qui definit si ont peut le traverser ou non...

    merci a vous, ça marche tres bien.
    voici le code final:
    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
     
     
        //initialisation du tableau de pixels
        Pixel ** pixels = NULL;
        pixels = (Pixel **)malloc (WIDTH_SIZE * sizeof(Pixel *));
        if (pixels != NULL){
            for (int i=0; i<WIDTH_SIZE; i++){
                pixels[i] = (Pixel *)malloc (HEIGHT_SIZE * sizeof(Pixel));
            }
        }
        for(int i=0;i<WIDTH_SIZE;i++){
                for(int j=0;j<HEIGHT_SIZE;j++){
                        (pixels[i][j]).no_couleur=-1;
                        (pixels[i][j]).est_physique=0;
                }
        }

  11. #11
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Citation Envoyé par bebaijhi Voir le message
    mais moi j'ai besoin de pouvoir afficher les pixels 1 par 1 ( c'est une peu comme si je decomposait l'image en plein de petites images de la taille d'un pixel )
    ?? Il y a SDL_BlitSurface pour cela ! Il suffit de déclarer un rectangle de 1*1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SDL_Rect rcDest = { x_pos, y_pos, 1, 1 };
    SDL_BlitSurface ( image, NULL, surface, &rcDest );
    et que chaque pixels soit associé a une valeur ( a savoir est_phusique) qui definit si ont peut le traverser ou non...
    Il y a bien plus souple que d'utiliser un tableau lourdingue de 800*600.
    Il suffit comme je l'ai déja écris d'accéder directement à la SDL_surface et de tester le pixel à l'abscisse X et ordonnée Y voulus selon un décalage.
    Selon la valeur du pixel tu peux déclarer ou non zone traversable ou non
    http://www.libsdl.org/cgi/docwiki.cgi/SDL_LockSurface
    Et puis si tu déclares un tableau de 800*600 ton programme risque de ralentir alors qu'en accédant directement à la SDL surface tu accèdes directement à la mémoire vidéo de la carte vidéo

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par CSIE_Angel#5 Voir le message
    new est utilisé quand tu veux instancier une classe. Or Pixels est une structure, tu doit donc utiliser la fonction malloc()
    "Nonsense!"

    new marche pour tous les types: structures, classes, int, etc.
    Le malloc(), c'est une philosophie C. Et en plus, ça oblige à caster la valeur de retour.
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	//initialisation du tableau de pixels
    	Pixel ** pixels = new Pixel* [WIDTH_SIZE];
    	//Selon le standard, inutile de tester la valeur de retour avec new,
    	//puisqu'une exception C++ de type std::bad_alloc est lancée en cas d'échec.
    	for (int i=0 ; i<WIDTH_SIZE ; i++) {
    		pixels[i] = new Pixel[HEIGHT_SIZE];
            }
    	for(int i=0 ; i<WIDTH_SIZE ; i++) {
    		for(int j=0 ; j<HEIGHT_SIZE ; j++) {
    			(pixels[i][j]).no_couleur=-1;
    			 (pixels[i][j]).est_physique=0;
    		}
    	}

    Ou mieux, juste une allocation par dimension:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	//initialisation du tableau de pixels
    	Pixel ** pixels = new Pixel* [WIDTH_SIZE];
    	pixels[0] = new Pixel[WIDTH_SIZE*HEIGHT_SIZE];
    	//Selon le standard, inutile de tester la valeur de retour avec new,
    	//puisqu'une exception C++ de type std::bad_alloc est lancée en cas d'échec.
    	for (int i=1 ; i<WIDTH_SIZE ; i++) {
    		pixels[i] = pixels[0] + (i*HEIGHT_SIZE);
            }
    	for(int i=0 ; i<WIDTH_SIZE ; i++) {
    		for(int j=0 ; j<HEIGHT_SIZE ; j++) {
    			(pixels[i][j]).no_couleur=-1;
    			 (pixels[i][j]).est_physique=0;
    		}
    	}
    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
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    biensur qu'il y a blitsurface, mais pour faire ça il faut une RGBSurface crée a partir d'une couleur! et j'ai besoin que la couleur et la "physique" du pixel soient independantes.
    donc ce que tu dit c'est exactement ce que je fait c'est juste que j'ai besoin de referencer la couleur du pixel et sa valeur "physique" dans un tableau.

  14. #14
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par CSIE_Angel#5 Voir le message
    new est utilisé quand tu veux instancier une classe. Or Pixels est une structure, tu doit donc utiliser la fonction malloc().
    Beaucoup d'erreurs dans cette phrase...

    - new peut créer dynamiquement une classe, une structure, ou tout autre type
    - malloc peut échouer à créer dynamiquement une structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct s
    {
      string str;
    };
    s* ps = (s)malloc(sizeof(s));
    ps->str = "toto";
    Ce code est illégal. On ne peut utiliser directement une structure (ou une classe, d'ailleurs) allouée par malloc que si c'est un POD.

    - De toute façon, structures et classes sont identiques, sauf pour les accès (privé, publique, protégé) par défaut.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  15. #15
    Membre régulier Avatar de cynique
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par bebaijhi Voir le message
    (il y a peut etre des erreur?)
    il commence a m'insulter:
    cannot convert `Pixel (*)[600]' to `Pixel*' in assignment
    no match for 'operator[]' in '*((+(((unsigned int)i) * 8u)) + pixels)[j]'
    ... ect
    Tu dois utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Pixel (*pixels)[600] = new Pixel[800][600];
    et puis "pixels[i][j]" marchera.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Ah ben dis donc, j'ai toujours cru que new etait l'operateur d'instanciation des classes en C++. Il me serait jamais venu a l'idée de l'utiliser sur des structures. Merci !

  17. #17
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Structures et classes c'est la même chose, il n'y a que les droits d'accès par défaut qui diffèrent, public pour struct et private pour class. Une struct peut donc avoir des constructeurs, destructeur, fonctions virtuelles, ... et donc ne pas pouvoir être alloue par malloc.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Et comme je l'ai dit, new peut allouer n'importe quoi, y compris des int... Ce n'est pas "l'opérateur d'instanciation des classes", c'est l'opérateur d'allocation dynamique... tout court.

    Et je rappelle qu'en C++, contrairement à Java, on peut instancier une classe sans new...
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Un petit problème de caractères & tableau
    Par e-m.guillaume dans le forum Langage
    Réponses: 7
    Dernier message: 20/06/2011, 18h17
  2. Petit problème de désallocation de tableau 2D
    Par bertry dans le forum Débuter
    Réponses: 4
    Dernier message: 29/04/2011, 13h46
  3. Petit problème de tableau
    Par jpboogie dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 16/01/2009, 10h13
  4. [SDL]Petit problème avec un tableau de surfaces
    Par Jordinateur dans le forum SDL
    Réponses: 15
    Dernier message: 29/08/2007, 12h12
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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