Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010
-
5 août 2004 à 02:56
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010
-
29 mars 2005 à 19:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 29 mars 2005 à 19:26
n'hesite pas a me contacter via la messagerie de ce site(pour en pas mettre trop de commentaire), tu c, le truc du noir et blanc, j'ai eu cette idée (ca fé 3 années) en plein cour d'histoire, hahahaha
ikks1
Messages postés3Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention21 octobre 2008 29 mars 2005 à 11:42
Slt,
Merci pour le principe...Le coup du Noir et du Blanc (les 2 couleurs extrêmes) en color transparente, et une surperposition de 2 images comprenant chacune 1 couleur tranparente, je n'y avais pas pensé.
D'ou l'intêret de bitblt et de tranparentblt.
Merci pour le tuyau...
A+
Ikks1
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 28 mars 2005 à 10:15
hmmm, même si j'ai quitté le vb depuis longtemps vers c#, c'est po grave, je me rappelle ce que j'ai fé dans ce prog, ben, au début, si vous me demander de faire un triangle plein avec des motifs, je crée dans une picturebox pi1 les motifs, je la rempli a fond( limité au triangle),puis, dans une pic2, je dessine le triangle en bleu sur fond blanc rempli(j'utilise une api qui fé des dégradé), puis je copie le pic2 sur pic1 avec le noir comme couleur de transparence,et puis je copie pic1 vers la picrturebox principale de dessin et que le blanc est la couleur de transparence, comme ca, on a un triangle rempli avec des motifs, voila, je suis tjrs la si vous avez besoin de qlq chose.
ikks1
Messages postés3Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention21 octobre 2008 26 mars 2005 à 19:35
slt,
bravo pour ton soft... mieux que photoshop 9
je cherche à développer un petit prog de dessin et j'ai des problemes pour remplir des cercles avec (alphablend), je vois que tu utilise ça à merveille...
pour les rectangles je n'ai pas de soucis pour rendre le fond transparen mais pour les ellispes, le hic.
j'ai le soucis que le boundind est aussi colorer de facon semi transparente.
Je vois que tu utilise pas mal les bitblt ,strechblt et transparentblt, mais en principe seule une couleur bien définie est rendue transparente mais pas semi-tranparente.
Faut il dessiner un cercle a partir du centre pour que ca marche ??? Dois 't'on utiliser une picture pour la forme , une autre pour la couleur et encore une autre pour le motif????
Dois t'on absolument utilser la méthode vertex???
Bref je galère....................;;
Peux tu m'éclairer ???
Quels est le principe du remplissage de cercle, pinceau etc... Bien que j'ai les codes sous les yeux (ébahis), je n'arrive pas à capter...
voici mon code pour un rectangle dans feuille. mouseup
If Outil 14 And (X0 <> 9999) And (Y0 <> 9999) And Button 1 Then
ClickDown = False
Shape.Visible = True
Feuille.DrawWidth = Slider1.Value
If Check1.Value = 0 Then
Feuille.FillStyle = 0
Feuille.FillColor = PicBack.BackColor
Feuille.Line (X0, Y0)-(x, Y), PicBack.BackColor, BF
Feuille.Line (X0, Y0)-(x, Y), PicFill.BackColor, B
X0 = 9999
Y0 = 9999
Else
Feuille.FillStyle = 1
Feuille.Line (X0, Y0)-(x, Y), PicFill.BackColor, B
X0 = 9999
Y0 = 9999
End If
Shape.Visible = False
End If
Feuille.Refresh
End Sub
Ca ça marche mais pour une ellispe/cercle, je n'y arrive pas...
As tu dû passer ("de force")par une autre méthode pour remplir ce cercle.
A +
ikks1
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 26 févr. 2005 à 14:36
plus de commentaire???
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 10 août 2004 à 14:08
merci pingouin
cs_Pingouin
Messages postés262Date d'inscriptionlundi 26 août 2002StatutMembreDernière intervention24 août 2005 9 août 2004 à 16:35
C'est vrai que toutes les archives compressées c penible. Sinon tres bon prog il merite plus que 5/10 kanm^m! Je vais etudier un peu ca j'suis sur kil ya des trucs bien a en tirer ! :Þ
Pingouin
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 6 août 2004 à 20:54
merci pour les conseils
LogRaam (aka Gabriel Mailhot)
Messages postés60Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention25 avril 2005 6 août 2004 à 20:16
>> "c'est faux, il faut faire
redr = 0
If coller = 1 Then
[CODE]
Else
[CODE]
End If "
** En effet, si tu as beoin d'initialiser d'initialiser le contenu de la variable redr à 0 avant de faire le test IF.
Cependant, dans ton code, tu assignes 0 à redr entre le premier et le deuxième test IF, ce qui suggère que tu ne dois pas l'initialiser avant le premier test IF.
pour revenir à ce bloc de code, tu peux aussi définir la variable " coller " comme une Booléen et faire le test comme suit:
If coller Then
[CODE]
Else
[CODE]
End If
Ça ne donne pas d'avantage côté performance mais c'est plus près du langage humain et ça rend le code encore plus conviviale. Nous pourrions traduire par "Si tu colles, fait ceci, sinon fait cela." Alors qu'avec une variable numérique, nous devons traduire par "Si coller est égale à 1 donc fait ceci, sinon fait cela". C'est moins humains dans le sens que la valeur "1" peut avoir plusieurs signification et qu'on doit aller voir plus haut dans le code pour bien comprendre la suite.
>> "et je sais pas comment tu as compris ce prog, c'est difficile de comprendre la logique d'un autre programmeur."
** Là je dois avouer que j'ai triché un peu. En fait, je dirige un département de recherche et je dois reviser à tous les jours les sources de l'équipe du développement.. Avec le temps, on vient à lire le code comme un livre et les modèles de sources peuvent être catégorisés pour une meilleure compréhension de l'ensemble d'un projet. Suffit souvent de bien comprendre la structure du code de la fonction "MAIN" pour savoir que tout le reste respectera ce même modèle. Et surtout avec du VB qui est tout sauf un langage cryptique.
Bonne chance avec le C# ! (petit truc, fait le tour du FrameWork, c'est le meilleur point de départ.. La syntaxe n'est pas importante, c'est le concept qui compte).
MadLucas
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 6 août 2004 à 19:09
pour MadLucas
(4. Autre suggestion.. remplace:
If coller = 1 Then
[CODE]
End If
redr = 0
If coller = 0 Then
[CODE]
End If
Par:
If coller = 1 Then
[CODE]
redr = 0
Else
[CODE]
End If
Comme ça, tu évite de faire un test de trop.)
c'est faux, il faut faire
redr = 0
If coller = 1 Then
[CODE]
Else
[CODE]
End If
et pour ce projet, je l'ai abondoné d'ici 1an, alors je l'ai posté pour aider les programmeurs, vous voyez qu'il est malstructuré, pas de commentaires, c'est seulement parceque le prog était prévu pour une semaine, et quand cette semaine est finie, j'ai complété la prog sans la structuration.
merci pour les trucs d'optimisation if et select case.
et je sais pas comment tu as compris ce prog, c'est difficile de comprendre la logique d'un autre programmeur. et pour m.brunews,il y a winrar qui fait .ace, et même winace, qui gère trop d'extension avec une rapidité compression/decompression
LogRaam (aka Gabriel Mailhot)
Messages postés60Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention25 avril 2005 6 août 2004 à 18:33
Bon, essayons d'être constructif..
1. Il y a un problème de "refresh" avec la fenêtre d'édition. Il est possible d'accélérer tout ça, même avec VB. Juste à bouger la souris dans la fenêtre d'édition pousse l'utilisation du processeur au plafond (???).
2. Tu aurais intérêt à mieux modéliser tes fonction afin d'éviter les variables publiques.
3. Remplace les On Error Resume Next par une gestion manuelle des erreurs.
4. Autre suggestion.. remplace:
If coller = 1 Then
[CODE]
End If
redr = 0
If coller = 0 Then
[CODE]
End If
Par:
If coller = 1 Then
[CODE]
redr = 0
Else
[CODE]
End If
Comme ça, tu évite de faire un test de trop.
5. Le IIf est lent, je te conseil le bon vieux If..Then..Else.
6. Petit vilain, tu utilises le GOTO ! ;-) ... Bien que j'ai rien contre la plupart du temps, tu devrais adopter une meilleure stratégie. Surtout que tu peux facilement le fair epour tous les cas où tu l'utilises dans ton code.
7. Pour les Select Cases.. Les Cases vont faire un tableau de JUMP en assembleur, ce qui est normalement plus rapide que de parcourir une suite de IF..THEN..ELSE.. Cependant, le IF..THEN..ELSE permet de modéliser une hiérarchie des probabilitées et donne la possibilité d'accélérer davantage le programme par sa logique de structure. Par exemple, si un cas est plus probable qu'un autre, alors on le test avec le IF en premier et on test les moins probables à la fin. Comme ça on gagne en vitesse. Le Select Case ne gère aucune priorité...
8. Ta fonction MouseMove, MouseUp, etc sont immenses !! Ça fait peur.. Essaye de fractionner le tout en plusieurs fonctions plus petites. Enlève les GOTO.
9. Tu peux optimiser en utilisant le pointeur de fonction "WITH".
10. Une suggestion, le code sur les FRM devrait être en fonction de l'interface. Place le reste dans des modules. Ce truc te permettra de changer rapidement d'interface et de "reconnecter" ton moteur facilement. Là, si tu changes de FRM, tu dois tout refaire ton code, c'est peu dynamique comme projet.
11. à la place d'utiliser des noms uniques pour des objets relatifs, utilise plutôt un tableau.. exemple:
For x& = 0 to 7
sil(x).Visible = True
Next x
taire.Visible = True
Placé comme ça dans un tableau, ton code devient plus compact et offre une meilleure vue d'ensemble pour le pauvre programmeur qui doit s'y aventurer. Éliminer la redondance est primordiale pour faire du code propre.
12. Tu ne devrais pas faire de DIM en plein milieu d'une fonction. Garde tes déclaration pour l'entête.
13. Tu devrais aussi faire du préprocess.. Exemple:
En conclusion, on voit qu'il y a beaucoup de travail dans ce projet. L'impression que ça me laisse cependant c'est que le projet ressemble à un projet codé "sur le fait", sans réel préparation, modélisation ou analyse. C'est comme si tu comemnçais directement à programmer par essais-erreurs.. sans planification. Les variables publics, les trop longues fonctions, les goto, etc. Ce sont tous des choses que tu peux mieux modéliser avec un peu d'analyse.
Bien que le code est long et laborieux et que tu utilises des API, ça n'en fait pas un projet de niveau expert à mon avis, du moins, pas de cette façon.
Je tranche pour un 7/10.
MadLucas
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 août 2004 à 15:20
ACE s'ouvre impec avec winrar (qui connait quasi tous les formats contrairement a winzip).
cs_timo76
Messages postés9Date d'inscriptionjeudi 12 septembre 2002StatutMembreDernière intervention28 mars 2011 6 août 2004 à 15:16
Je pense que ce code doit être intéressant au vu des commentaires mais je ne connais pas les zip "ace" winzip non plus. Comment faire?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 août 2004 à 14:45
Me semble impec, faudrait etre grincheux pour trouver matiere a medisance.
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 6 août 2004 à 14:34
ca va comme ca??
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 août 2004 à 12:49
Vrai que "COMME PHOTOSHOP...." est un peu provocateur, tu pouvais t'attendre a quelques moqueries. Tu pourrais arranger ce titre pour eviter toute polemique superflue.
Maintenant faudrait arreter de vous engueuler, on est pas a la maternelle.
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 6 août 2004 à 10:13
excusez moi pour les zip et rar, c'est seulement pour bien le compresser (<500ko)
MoiOlivier
Messages postés172Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 4 août 2005 6 août 2004 à 00:45
Salut,
C'est vrai que tous les zip (et rar) successifs c'est gênant, mais bon c'est un détail.
J'aime bien, bien fait (la barre d'outils est intéressante).
10/10
"Comme Photoshop", c'est un peu osé comme comparaison ;)
sef6
Messages postés14Date d'inscriptionvendredi 17 janvier 2003StatutMembreDernière intervention 6 août 2004 6 août 2004 à 00:03
Un peu chiant tout tes zip, mais sinon super code, Bravo 10/10 ;)
Fildomen
Messages postés805Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention30 octobre 2010 5 août 2004 à 02:56
passer un ptit temps sur notre site, et remplissez un peu ce vierge forum
29 mars 2005 à 19:26
29 mars 2005 à 11:42
Merci pour le principe...Le coup du Noir et du Blanc (les 2 couleurs extrêmes) en color transparente, et une surperposition de 2 images comprenant chacune 1 couleur tranparente, je n'y avais pas pensé.
D'ou l'intêret de bitblt et de tranparentblt.
Merci pour le tuyau...
A+
Ikks1
28 mars 2005 à 10:15
26 mars 2005 à 19:35
bravo pour ton soft... mieux que photoshop 9
je cherche à développer un petit prog de dessin et j'ai des problemes pour remplir des cercles avec (alphablend), je vois que tu utilise ça à merveille...
pour les rectangles je n'ai pas de soucis pour rendre le fond transparen mais pour les ellispes, le hic.
j'ai le soucis que le boundind est aussi colorer de facon semi transparente.
Je vois que tu utilise pas mal les bitblt ,strechblt et transparentblt, mais en principe seule une couleur bien définie est rendue transparente mais pas semi-tranparente.
Faut il dessiner un cercle a partir du centre pour que ca marche ??? Dois 't'on utiliser une picture pour la forme , une autre pour la couleur et encore une autre pour le motif????
Dois t'on absolument utilser la méthode vertex???
Bref je galère....................;;
Peux tu m'éclairer ???
Quels est le principe du remplissage de cercle, pinceau etc... Bien que j'ai les codes sous les yeux (ébahis), je n'arrive pas à capter...
voici mon code pour un rectangle dans feuille. mouseup
If Outil 14 And (X0 <> 9999) And (Y0 <> 9999) And Button 1 Then
ClickDown = False
Shape.Visible = True
Feuille.DrawWidth = Slider1.Value
'Gestion transparence Rectangle
Picmerge.Picture = Feuille.Image
Picmerge.Line (X0, Y0)-(x, Y), PicBack.BackColor, BF
Shape.Visible = False
Blend.SourceConstantAlpha = (255 - (Me.HScroll1.Value))
CopyMemory BlendLng, Blend, 4
AlphaBlend Feuille.hdc, X0, Y0, x - X0, Y - Y0, _
Picmerge.hdc, X0, Y0, x - X0, Y - Y0, BlendLng
'fin gestion transparence Rectangle
If Check1.Value = 0 Then
Feuille.FillStyle = 0
Feuille.FillColor = PicBack.BackColor
Feuille.Line (X0, Y0)-(x, Y), PicBack.BackColor, BF
Feuille.Line (X0, Y0)-(x, Y), PicFill.BackColor, B
X0 = 9999
Y0 = 9999
Else
Feuille.FillStyle = 1
Feuille.Line (X0, Y0)-(x, Y), PicFill.BackColor, B
X0 = 9999
Y0 = 9999
End If
Shape.Visible = False
End If
Feuille.Refresh
End Sub
Ca ça marche mais pour une ellispe/cercle, je n'y arrive pas...
As tu dû passer ("de force")par une autre méthode pour remplir ce cercle.
A +
ikks1
26 févr. 2005 à 14:36
10 août 2004 à 14:08
9 août 2004 à 16:35
Pingouin
6 août 2004 à 20:54
6 août 2004 à 20:16
redr = 0
If coller = 1 Then
[CODE]
Else
[CODE]
End If "
** En effet, si tu as beoin d'initialiser d'initialiser le contenu de la variable redr à 0 avant de faire le test IF.
Cependant, dans ton code, tu assignes 0 à redr entre le premier et le deuxième test IF, ce qui suggère que tu ne dois pas l'initialiser avant le premier test IF.
pour revenir à ce bloc de code, tu peux aussi définir la variable " coller " comme une Booléen et faire le test comme suit:
If coller Then
[CODE]
Else
[CODE]
End If
Ça ne donne pas d'avantage côté performance mais c'est plus près du langage humain et ça rend le code encore plus conviviale. Nous pourrions traduire par "Si tu colles, fait ceci, sinon fait cela." Alors qu'avec une variable numérique, nous devons traduire par "Si coller est égale à 1 donc fait ceci, sinon fait cela". C'est moins humains dans le sens que la valeur "1" peut avoir plusieurs signification et qu'on doit aller voir plus haut dans le code pour bien comprendre la suite.
>> "et je sais pas comment tu as compris ce prog, c'est difficile de comprendre la logique d'un autre programmeur."
** Là je dois avouer que j'ai triché un peu. En fait, je dirige un département de recherche et je dois reviser à tous les jours les sources de l'équipe du développement.. Avec le temps, on vient à lire le code comme un livre et les modèles de sources peuvent être catégorisés pour une meilleure compréhension de l'ensemble d'un projet. Suffit souvent de bien comprendre la structure du code de la fonction "MAIN" pour savoir que tout le reste respectera ce même modèle. Et surtout avec du VB qui est tout sauf un langage cryptique.
Bonne chance avec le C# ! (petit truc, fait le tour du FrameWork, c'est le meilleur point de départ.. La syntaxe n'est pas importante, c'est le concept qui compte).
MadLucas
6 août 2004 à 19:09
(4. Autre suggestion.. remplace:
If coller = 1 Then
[CODE]
End If
redr = 0
If coller = 0 Then
[CODE]
End If
Par:
If coller = 1 Then
[CODE]
redr = 0
Else
[CODE]
End If
Comme ça, tu évite de faire un test de trop.)
c'est faux, il faut faire
redr = 0
If coller = 1 Then
[CODE]
Else
[CODE]
End If
et pour ce projet, je l'ai abondoné d'ici 1an, alors je l'ai posté pour aider les programmeurs, vous voyez qu'il est malstructuré, pas de commentaires, c'est seulement parceque le prog était prévu pour une semaine, et quand cette semaine est finie, j'ai complété la prog sans la structuration.
merci pour les trucs d'optimisation if et select case.
et je sais pas comment tu as compris ce prog, c'est difficile de comprendre la logique d'un autre programmeur. et pour m.brunews,il y a winrar qui fait .ace, et même winace, qui gère trop d'extension avec une rapidité compression/decompression
6 août 2004 à 18:33
1. Il y a un problème de "refresh" avec la fenêtre d'édition. Il est possible d'accélérer tout ça, même avec VB. Juste à bouger la souris dans la fenêtre d'édition pousse l'utilisation du processeur au plafond (???).
2. Tu aurais intérêt à mieux modéliser tes fonction afin d'éviter les variables publiques.
3. Remplace les On Error Resume Next par une gestion manuelle des erreurs.
4. Autre suggestion.. remplace:
If coller = 1 Then
[CODE]
End If
redr = 0
If coller = 0 Then
[CODE]
End If
Par:
If coller = 1 Then
[CODE]
redr = 0
Else
[CODE]
End If
Comme ça, tu évite de faire un test de trop.
5. Le IIf est lent, je te conseil le bon vieux If..Then..Else.
6. Petit vilain, tu utilises le GOTO ! ;-) ... Bien que j'ai rien contre la plupart du temps, tu devrais adopter une meilleure stratégie. Surtout que tu peux facilement le fair epour tous les cas où tu l'utilises dans ton code.
7. Pour les Select Cases.. Les Cases vont faire un tableau de JUMP en assembleur, ce qui est normalement plus rapide que de parcourir une suite de IF..THEN..ELSE.. Cependant, le IF..THEN..ELSE permet de modéliser une hiérarchie des probabilitées et donne la possibilité d'accélérer davantage le programme par sa logique de structure. Par exemple, si un cas est plus probable qu'un autre, alors on le test avec le IF en premier et on test les moins probables à la fin. Comme ça on gagne en vitesse. Le Select Case ne gère aucune priorité...
8. Ta fonction MouseMove, MouseUp, etc sont immenses !! Ça fait peur.. Essaye de fractionner le tout en plusieurs fonctions plus petites. Enlève les GOTO.
9. Tu peux optimiser en utilisant le pointeur de fonction "WITH".
10. Une suggestion, le code sur les FRM devrait être en fonction de l'interface. Place le reste dans des modules. Ce truc te permettra de changer rapidement d'interface et de "reconnecter" ton moteur facilement. Là, si tu changes de FRM, tu dois tout refaire ton code, c'est peu dynamique comme projet.
11. à la place d'utiliser des noms uniques pour des objets relatifs, utilise plutôt un tableau.. exemple:
Ton code..
silhg.Visible = True
silh.Visible = True
silhd.Visible = True
sild.Visible = True
silbd.Visible = True
silb.Visible = True
silbg.Visible = True
silg.Visible = True
taire.Visible = True
Aurait pû être:
For x& = 0 to 7
sil(x).Visible = True
Next x
taire.Visible = True
Placé comme ça dans un tableau, ton code devient plus compact et offre une meilleure vue d'ensemble pour le pauvre programmeur qui doit s'y aventurer. Éliminer la redondance est primordiale pour faire du code propre.
12. Tu ne devrais pas faire de DIM en plein milieu d'une fonction. Garde tes déclaration pour l'entête.
13. Tu devrais aussi faire du préprocess.. Exemple:
Ton code..
HS1.Max = Picture3.ScaleWidth - Picture2.ScaleWidth
HS2.Max = Picture3.ScaleWidth - Picture2.ScaleWidth
...
Devrait être..
myVar& = Picture3.ScaleWidth - Picture2.ScaleWidth
HS1.Max = myVar
HS2.Max = myVar
...
En conclusion, on voit qu'il y a beaucoup de travail dans ce projet. L'impression que ça me laisse cependant c'est que le projet ressemble à un projet codé "sur le fait", sans réel préparation, modélisation ou analyse. C'est comme si tu comemnçais directement à programmer par essais-erreurs.. sans planification. Les variables publics, les trop longues fonctions, les goto, etc. Ce sont tous des choses que tu peux mieux modéliser avec un peu d'analyse.
Bien que le code est long et laborieux et que tu utilises des API, ça n'en fait pas un projet de niveau expert à mon avis, du moins, pas de cette façon.
Je tranche pour un 7/10.
MadLucas
6 août 2004 à 15:20
6 août 2004 à 15:16
6 août 2004 à 14:45
6 août 2004 à 14:34
6 août 2004 à 12:49
Maintenant faudrait arreter de vous engueuler, on est pas a la maternelle.
6 août 2004 à 10:13
6 août 2004 à 00:45
C'est vrai que tous les zip (et rar) successifs c'est gênant, mais bon c'est un détail.
J'aime bien, bien fait (la barre d'outils est intéressante).
10/10
"Comme Photoshop", c'est un peu osé comme comparaison ;)
6 août 2004 à 00:03
5 août 2004 à 02:56
http://www.devportail.tk