1

Je n'arrive pas à faire ça correctement... Le but est de :
- Sauver deux tableaux à deux dimentions, plus deux entier pour indiquer justement ces dimentions, dans un fichier externe
- Ouvrir ce fichier externe, et allouer dynamiquement en mémoire les deux tableaux

Voilà les deux programmes :

Sauvegarde :

// Definition de deux tableaux tbl_mps et tbl_mpt, ainsi que leurs dimentions dans int_dmx et int_dmy
fil_map=fopen(chr_nam,"wb")
fwrite(&int_dmx,1,sizeof(int),fil_map); // Sauvegarde des
fwrite(&int_dmy,1,sizeof(int),fil_map); // deux dimentions
fwrite(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map); // Sauvegarde des
fwrite(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map); // deux tableaux
fputc(0,fil_map);
fputs("GBM",fil_map);
fputc(0,fil_map);
fputc(OTH_TAG,fil_map);
fclose(fil_map);



Chargement :
char **tbl_mps=NULL,**tbl_mpt=NULL,chr_nam[8];
[...]
fil_map=fopen(chr_nam,"r")
fread(&int_dmx,1,sizeof(int),fil_map); // Lecture des deux première données : les dimentions
fread(&int_dmy,1,sizeof(int),fil_map);

printf_xy(2,64,"Taille : %d x %d",int_dmx,int_dmy,A_NORMAL); // Affichage pour vérification
ngetchx();

tbl_mps=calloc(int_dmy,sizeof(**tbl_mps)); // Allocation dynamique des deux tableaux (première partie)
tbl_mpt=calloc(int_dmy,sizeof(**tbl_mpt));
for(int_for=0;int_for<int_dmy;int_for++)
{ // Allocation dynamique des deux tableaux (deuxième partie)
tbl_mps[int_for]=calloc(int_dmx,sizeof(**tbl_mps));
tbl_mpt[int_for]=calloc(int_dmx,sizeof(**tbl_mpt));
}

fread(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map);
fread(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map);
fclose(fil_map);



Bon déjà je ne suis pas sûr que la technique d'allocation soit bonne, mais avant il y a un autre problème : lors de l'affichage avec printf_xy, les deux variables 'dimentions' n'ont pas du tout les valeurs que je leur avait donné dans le 1er programme.
Pkoi ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

heu... petite question smile
pkoi, dans le chargement, tu ouvres ton fichier en mode texte ?
ça devrait pas plutôt être en mode binaire, comme pr la sauvegarde ?

(qd ni 'b' ni 't' n'est précisé, comme c le cvas pr le chargement, c'est le mode text qui est choisi par défaut, je crois, non ?)

essaye en mettant "rb" au lieu de "r"
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

J'ai cherché pendant une heure alors que ct simplement ça ???

Merci smile

(ça marche toujours pas, j'ai une adress error, mais au moins les dimentions sont correctes grin)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Mais je crois qu'il a pas mis les bons arguments dans la fonction fwrite, voici son prototype :
unsigned short fwrite (const void *ptr, unsigned short size, unsigned short n, FILE *stream);Or, il a mis la taille après le nombre d'éléments...

Mais je crois que pour mettre juste un nombre, il suffit d'utiliser fputc, non ?
Enfin, moi, je n'utilise jamais ces fonctions, j'utilise celles de vat.h, donc je ne peux pas t'aider...

5

Jackie > Post croisé... L'erreur était encore plus bête que ça grin

c'est aussi la 1ere fois que j'utilise ces fonctions, d'habitude je me sert de vat.h mais vu ce que je vais avoir à stoquer je fais au plus simple...
Et puis avec vat.h je ne sais pas comment on donne une extension perso à un fichier sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

avec vat.h, c'est pareil, c'est juste plus compliqué pour trouver l'adresse du bloc correspondant au fichier, après, tu copies tes tableaux et tout et tout.
Ensuite, pour les extensions personnalisées, il faut que ton fichier se termine par '' + "EXT" + '' + OTH_TAG

7

Ok j'essaierais ça pr vertel, qui utilise vat.h...

Heu... C'est normale que j'ai une "adress error" au fclose ??????? J'ai fait des tests, ça plante systématique à cette ligne là, je comprends pas...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

Oula non en fait ça plante monstrueusement mais pas à cet endroit préci...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

t1 c'est n'importe quoi ! ça plante à la fermeture du fichier confus

DrawStr(2,54,"Lecture en cours...",A_NORMAL);
fil_map=fopen(chr_nam,"rb")
if(fil_map)
{
fread(&int_dmx,1,sizeof(int),fil_map);
fread(&int_dmy,1,sizeof(int),fil_map);
tbl_mps=calloc(int_dmy,sizeof(*tbl_mps));
tbl_mpt=calloc(int_dmy,sizeof(*tbl_mpt));
for(int_for=0;int_for<int_dmy;int_for++)
{
tbl_mps[int_for]=calloc(int_dmx,sizeof(char));
tbl_mpt[int_for]=calloc(int_dmx,sizeof(char));
}
fread(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map);
fread(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map);
DrawStr(2,64,"Calloc terminé.",A_NORMAL);
fclose(fil_map);
DrawStr(2,64,"Lecture terminée.",A_NORMAL);


La chaine "calloc terminé" est affichée, puis "adress error"... sadsadsad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

Oups...
Quelle version de TIGCC?
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

juste une question :

**tbl_mps=NULL

pourquoi cette déclaration alors que ce n'est qu'un tableau à 2 dimensions (une matrice quoi) ???

*tlb_mps = NULL; plutôt non ?

ensuite tu alloues et tu stocke l'adresse de la mem allouée dans ce truc, puis tu extrait ton tableau à cette adresse.
Et tu utilises l'arithmétique de pointeur pour acceder aux éléments (étant donné que tu as les dimensions x et y, y'aura aucun prob).

J'avais fait une routine comme celle là, et qui marchait. Faudrait que je la retrouve.

Elle ouvrait le fichier dont on demandait le nom, allouer, et fesait tout quoi. On pouvait l'apppeler plusieurs fois dans le prog sans problème.
Si ton prob se résout tjs pas, je te filerai les sources Bob. wink

attend, je poste un exemple si tu veux (je crois bien qu'il marchen j'avais fait des tests, il devrait pas y avoir d'erreur normalement).
C pas top optimisé mais bon .... wink
#define USE_TI89              // Produce .89z File #define SAVE_SCREEN #include <tigcclib.h>         // Include All Header Files unsigned short *sprt = NULL; short x_size_map =0, y_size_map =0, nb_sprt =0; char *map = NULL; int loadmap(char fich[]) {            FILE *fp;      fp = fopen(fich, "rb");      fread(&x_size_map, 1, sizeof(short), fp);      fread(&y_size_map, 1, sizeof(short) ,fp);      fread(&nb_sprt, 1, sizeof(short), fp);            if((map = realloc(map, x_size_map*y_size_map*sizeof(char))) == NULL)       return 1;      if((sprt = realloc(sprt, nb_sprt*16*sizeof(unsigned short))) == NULL)       return 1;            fread(map, 1, x_size_map*y_size_map*sizeof(char), fp);      fread(sprt ,1, sizeof(unsigned short)*16*nb_sprt, fp);             fclose(fp);   return 0; } void _main(void) {      sprt = calloc(1, sizeof(short));      map = calloc(1, sizeof(char));      /* eviter plantage qd on fera realloc dans loadmap pour la 1ère fois, donc on alloue un esapace bidon au départ*/            char fich[]= "map"; // nom du fichier à ouvrir, varie pendant l'execution      int i,j;            if(loadmap(fich) == 1)        goto fin;            clrscr();      for(j=0 ; j<6; j++)      {           for(i=0; i<10; i++)           {                Sprite16(i*16,j*16, 16, sprt +16* (*(map+ i + j*x_size_map)), LCD_MEM, SPRT_OR);           }      }      ngetchx();       fin :      free(sprt);      free(map); }
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

12

ça affiche ensuite le niveau pour vérifier que tt est ok. wink

voilà la source du prog d'écriture aussi :
short x_size_map =10, y_size_map = 6, nb_sprt = 2; char map[6][10]= {{0,1,0,1,0,1,0,1,0,1},                   {1,0,1,0,1,0,1,0,1,1},                   {1,1,0,1,0,1,0,1,0,1},                   {1,0,0,0,0,0,0,0,0,1},                   {1,0,1,0,1,0,1,0,1,1},                   {1,1,1,1,1,1,1,1,1,1}};                    unsigned short sprt[2][16] = {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},                               { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}}; void _main(void) {   FILE *fp;   fp = fopen("map","wb");   fwrite(&x_size_map,1, sizeof(short) ,fp);   fwrite(&y_size_map,1, sizeof(short) ,fp);   fwrite(&nb_sprt,1, sizeof(short) ,fp);   fwrite(map, 1, sizeof(char)*x_size_map*y_size_map, fp);   fwrite(sprt, 1, sizeof(unsigned short)*nb_sprt*16, fp);      //on met une extension speciale:   fputc(0,fp);   fputs("MAP",fp);   fputc(0,fp);   fputc(OTH_TAG,fp);     fclose(fp); }

vala ... wink cet exemple marche, je sais pas si ça peut t'aider sad, mais bon.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

13

Ah oui, le problème est là en effet.

Ces déclarations-là sont fausses:
char **tbl_mps=NULL,**tbl_mpt=NULL,chr_nam[8];

Le code correct (du moins j'espère: j'ai corrigé l'erreur que Pim89 a remarquée en tout cas) pour le chargement est:
char chr_nam[8];
[...]
fil_map=fopen(chr_nam,"r")
fread(&int_dmx,1,sizeof(int),fil_map); // Lecture des deux première données : les dimensions
fread(&int_dmy,1,sizeof(int),fil_map);

printf_xy(2,64,"Taille : %d x %d",int_dmx,int_dmy,A_NORMAL); // Affichage pour vérification
ngetchx();

char (*tbl_mps)[int_dmx], (*tbl_mpt)[int_dmx]; // Déclaration au milieu du code (nécessite GCC 3, donc TIGCC 0.92 minimum)
/*Ça fait comme ton code: ça crée un char tbl_mps[int_dmy][int_dmx]. C'est peut-être l'inverse que tu veux:
char (*tbl_mps)[int_dmy], (*tbl_mpt)[int_dmy]; */

tbl_mps=calloc(int_dmx*int_dmy,sizeof(char)); // Allocation dynamique des deux tableaux
tbl_mpt=calloc(int_dmx*int_dmy,sizeof(char));

fread(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map);
fread(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map);
fclose(fil_map);


Et au fait: "dimension", ça s'écrit avec un "s"! grin
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

Ça ne marche toujours pas sad

Premièrement, le coup du double pointeur je l'avais trouvé dans la doc de TIGCC, mais je l'ai peut-être mal adapté...
Toujours est-il que ton code ne marche pas, Kevin, parcequ'après les tableaux tbl_mps et tbl_mpt sont considéré comme ayant une seule direction sad
Enfin si vous regardez l'exemple de TIGCC avec un double pointeur, c'est ça que je voudrais arriver à faire sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

Il faut que tu corriges aussi le code d'enregistrement, pas seulement le code de chargement.

Et tu ne peux pas stocker des pointeurs dans des fichiers parce qu'ils ne seront plus valables par la suite, donc le coup du double pointeur, tu l'oublies.
Tu regardes bien la FAQ de TIGCC, il y a une méthode décrite comme étant la meilleure, c'est la seule qui marche ici (et c'est celle que j'ai utilisée).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

Je suis completement largué là...

Le code d'enregistrement a peu de chances d'être mauvais, enfin je ne pense pas qu'il y ait 36 façons de sauver ces dimx*dimy valeurs dans le fichier externe, donc de toute façon on a :

fwrite(&int_dmx,1,sizeof(int),fil_map);
fwrite(&int_dmy,1,sizeof(int),fil_map);
fwrite(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map);
fwrite(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map);


Mais à la lecture, il faut allouer le tableau en ne connaissant aucune de ses dimentions, et c'est la que ça coince.

char (*tbl_mps)[int_dmy],(*tbl_mpt)[int_dmy];
tbl_mps=calloc(int_dmx*int_dmy,sizeof(char));
tbl_mpt=calloc(int_dmx*int_dmy,sizeof(char));


Ça c'est bien joli, mais comme le tableau a été déclaré comme *tbl_mpt=NULL au début, TIGCC refuse de comprendre qu'il a deux dimentions.
De plus, et apparement c'est un autre problème, le fclose() déclanche une adress error à chaque fois.

Pour info, je sais pas si ça aide, ma version de TIGCC est la 0.94 beta 11
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

Vertyos a écrit :
Le code d'enregistrement a peu de chances d'être mauvais, enfin je ne pense pas qu'il y ait 36 façons de sauver ces dimx*dimy valeurs dans le fichier externe, donc de toute façon on a :

fwrite(&int_dmx,1,sizeof(int),fil_map);
fwrite(&int_dmy,1,sizeof(int),fil_map);
fwrite(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map);
fwrite(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map);

Ils sont déclarés comment, tbl_mps et tbl_mpt, quand tu les enregistres? Si c'est en doubles pointeurs, c'est faux. Il faut les déclarer comme au chargement.
Mais à la lecture, il faut allouer le tableau en ne connaissant aucune de ses dimentions, et c'est la que ça coince.

char (*tbl_mps)[int_dmy],(*tbl_mpt)[int_dmy];
tbl_mps=calloc(int_dmx*int_dmy,sizeof(char));
tbl_mpt=calloc(int_dmx*int_dmy,sizeof(char));


Ça c'est bien joli, mais comme le tableau a été déclaré comme *tbl_mpt=NULL au début, TIGCC refuse de comprendre qu'il a deux dimentions.

Hein? Tu l'as vu ou *tbl_mpt=NULL dans mon code?
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

18

Ils sont déclarés comment, tbl_mps et tbl_mpt, quand tu les enregistres? Si c'est en doubles pointeurs, c'est faux. Il faut les déclarer comme au chargement.

Ils ne sont pas alloué dynamiquement, donc ils sont déclaré tout simplement :
char tbl_mpt[20][20]={{......}}; (les 20 ne sont qu'un exemple)
Hein? Tu l'as vu ou *tbl_mpt=NULL dans mon code?

Ahhhh... D'accord...
Mais si on le retire, ça marche encore moins, puisqu'on obtient "tbl_mpt undeclared" et "tbl_mps undeclared". J'ai cru comprendre que TIGCC n'aime pas qu'on les déclare en plein milieu du programme, or comme on ne connait pas leur taille avant d'avoir commencé à lire le ficher externe, on tourne en rond sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

19

Vertyos a écrit :
Ils ne sont pas alloué dynamiquement, donc ils sont déclaré tout simplement : char tbl_mpt[20][20]={{......}}; (les 20 ne sont qu'un exemple)

Bon, ça devrait marcher alors.
Ahhhh... D'accord...
Mais si on le retire, ça marche encore moins, puisqu'on obtient "tbl_mpt undeclared" et "tbl_mps undeclared". J'ai cru comprendre que TIGCC n'aime pas qu'on les déclare en plein milieu du programme, or comme on ne connait pas leur taille avant d'avoir commencé à lire le ficher externe, on tourne en rond sad

C'est censé marcher si tu le déclares au milieu, depuis TIGCC 0.92 déjà. Mon code ne devrait pas te donner des erreurs "undeclared".
L'important, c'est de déclarer tbl_mps et tbl_mpt avant leur première utilisation (mais après la lecture des dimensions).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

20

Victoiiiiiiire smile
Enfin presque... J'ai comprit d'ou venait les "undeclared" : les deux tableaux étaient déclarés à l'interieur d'un if et apparement on ne peut pas faire ça... Mais si je retire ce if qui correspond à "est-ce que le fichier est valide", il y a de tres gros risques de plantage...
Enfin v me démerder, mais merci bcp smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

21

Bob, ma méthode est très simple pourtant ! on a les octets correspondants au tableau qu'on extrait dans la zone allouée (avec le pointeur pointant dessus) et ensuite on accède au éléments grace à l'arithmétique de pointeur.

Je trouve la méthode à Kevin un poil plus complexe que la mienne en tt cas (car il déclare comme tab, pas comme pointeur pur, et je trouve qu'un pointeur pur est plus facile à manipuler) .
Enfin elle sont assez semblables. wink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

22

Elles me rappellent qqchose tes sources... Un truc entre liquid et toi, non ?

Bon sinon sans vouloir te vexer je préfere la méthode de Kevin, qui se rapproche bcp plus de celle que je voulais utiliser au départ. Quoique v essayer quand même la tienne...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

Vertyos a écrit :
Victoiiiiiiire smile Enfin presque... J'ai comprit d'ou venait les "undeclared" : les deux tableaux étaient déclarés à l'interieur d'un if et apparement on ne peut pas faire ça...

Si, tu peux faire ça. Mais tout le code qui utilise les tableaux doit aussi être dans le if!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

24

Vertyos a écrit :
Elles me rappellent qqchose tes sources... Un truc entre liquid et toi, non ?
Bon sinon sans vouloir te vexer je préfere la méthode de Kevin, qui se rapproche bcp plus de celle que je voulais utiliser au départ. Quoique v essayer quand même la tienne...


en fait j'ai fait cette routine une fois mon livre de C lu ... avec liquid, je captais presque rien au C, donc je le saoulais de questions stupides qui ont amenées à rien finalement (car j'ai jamais réussi à faire marcher).
Donc je me suis documenté sur le C, et j'ai fait ça pour voir, avec tes méthodes "Pim89", et tout marchait. wink
Bah sinon je préfère tjs ma méthode grin, j'aime bien comme ça. wink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

25

C'est une grosse contrainte, vu que le tableau est utilisé pendant toute l'execution du prog...
La méthode de Pim a l'air pas mal, à voir...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

26

Disons qu'elle est très simple !

la seule difficulté ensuite, est l'accés aux éléments des tableaux, juste par arithmétique de pointeur (cad passer à des adresses suivantes en ajoutant ou retranchant des valeur au contenu du pointeur, pour obtenir la valeur suivante stocké dans le tableau).

Mais rien d'extremement dur. Puis tu peux tjs poser des questions si t'y arrives pas wink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

27

Nan c tout con, ça marche très bien et en plus ça m'évite d'inverser un truc ds mon tableau + tard (je sais pas pkoi ça l'inverse d'ailleurs, mais étant donné que ça marche, v pas chercher à comprendre grin)

Pour les matrices, je serais tenté de reprendre le système de CMS, très économique en mémoire. Mais les '%' en C, ça ralenti énormément, non ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

28

Comment ça ?? je comprend pas très bien. wink

Tu peux expliquer très rapidement le principe et j'essairai de te dire si c'est fesable en C.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

29

Je sais ce c'est faisable, tout ce que je veux savoir c'est si en temps de calcul c'est envisageable.
Si tu n'as jamais utilisé les modulo tu ne peux donc pas répondre...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

30

oué, je vois pas dsl. sad
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^