TRIUMVIRAT FLOCON DE NEIGE

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 14 janv. 2011 à 10:20
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 - 31 janv. 2011 à 12:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52721-triumvirat-flocon-de-neige

jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
31 janv. 2011 à 12:06
@Cirec

Merci, Cirec pour ta réponse.
La D7 perso, est limité pour la gestion d'appli avec une base de données.
Je vais peut-être acheter une version pro 2010, afin d'avoir les objets directement lié à la BD, si la gestion des fuites est intégrée, ce serait un plus pour me décider (900€ pour du dev en loisir !).

@Caribensila

Si je lui envoi, tous mes bouts de code, il va péter un plomb. Mais c'est sur ça à l'aire efficase !

Jean.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
25 janv. 2011 à 01:55
... car c'est le seul qui corrige.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
25 janv. 2011 à 01:53
Salut à tous !

Un truc de pro :

- le meilleur outil pour les fuites et autres conneries... C'est Cirec. :)))
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
21 janv. 2011 à 12:25
@JDERF:

non D7 date de 2002 (si je ne me trompe pas)
pour les versions antérieurs à Turbo Delphi il faut regarder le
Commentaire de cincap le 14/01/2011 16:40:08
et se reporter vers un outil freeware tel que MemCheck et/ou MemProof
jderf Messages postés 189 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 2 octobre 2014 1
19 janv. 2011 à 11:43
Bonjour,

@Cirec, peux-tu me dire si "l'outil de report intégré à Delphi depuis Turbo Delphi 2006" est present dans la version D7 personnel ou si c'est uniquement dans la version pro ?

Merci.
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
17 janv. 2011 à 14:21
Bonjour à toutes et à tous,

@ Cantador, c'est quand même grâce à ta source de départ que celle çi existe.

Pour ma part, j'ai ajouter une fiche qui permet à l'exécution de choisir 7 fonds contenus dans une ressource ainsi que 5 balles personnalisées.

Sur cette fiche, on peut aussi choisir par un TButton d'autres fonds, par copy/coller ou Drag and Drop.

On peut choisir un fichier musical (Wav, Wma, Mid, Mp3),

On peut activer/désactiver avec un TChekbox l'effet neige, l'effet balle ainsi que le choix d'autres balles plutôt que celles de la ressource.

Puis avec un click sur le bouton "Animation" on affiche la forme avec le fond et les animations.

Ces modifs me suffissent et il est clair que n'importe qui peut compléter cette source.

J'ai aussi un Setup d'install avec un dossier "Carte de noel" ou se trouvent de beaux décors.

@+,

Cincap
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
17 janv. 2011 à 09:20
@cincap :

de la neige qui tombe..
mais il y aussi le vent qui de temps en temps vient bousculer les flocons et lorsque le sol est froid, ces derniers s'ammoncellent sur le sol gelé..
un sujet pour toi consisterait à faire apparaître les quatre saisons en fondu enchainé
en y ajoutant quelques animations graphiques et sonores.

Un programme où l'imagination semble sans bornes tellement il y a de solutions pour le traiter.

bref, un beau chantier riche, plein de fantaisies et de couleurs.
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
15 janv. 2011 à 09:24
Bonjour à toutes et à tous,

@ Cirec, merci pour tes précieux conseils, dans la version définitive, celle avec (chargement des Jpg et musique, TFloc était libéré dans le Destroy (pas l'ensemble des flocons), peut être pas suffissant !).

Enfin par souci de perfection, j'ai quand même modifié le code en ce sens.

@+,

Cincap
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
14 janv. 2011 à 19:02
"D'après Cirec il n'y avait pas que TFloc supposé en défaut."

non non la totalité des fuites étaient dues aux TFloc non libérés.
en fait plus précisément c'est le Bitmap du TFloc qui crée TBrush, TPen, TFont etc etc et comme ce bitmap n'était pas libéré par un Free il ne pouvait pas libérer les autres composants qu'il avait créé d'où la fuite X 100 flocons !!

"il faut des bons outils..
seul cirec les possèdent et il ne veut pas nous les donner..
il se les gardent rien que pour lui..le vilain..
et évidememnt il a toujours une avance sur nous !"

ouaip c'est tout à fait ça :p

non sans rire .. je n'utilise aucun de ces outils.
Les fuites je les ai repérées de suite (c'est une habitude à prendre)

et pour les traquer ou les mettre en évidence j'utilise l'outil de report intégré à Delphi depuis Turbo Delphi 2006 et son utilisation est très simple, elle se résume à une simple déclaration :
ReportMemoryLeaksOnShutdown := True;

à la fermeture du programme, en cas de fuites, une "MessageBox" s'ouvre avec le nom des fuyards :D
quand ils sont nommés .. ce qui n'est pas toujours le cas !!
mais ça reste quand même un outil très puissant et très utile ...
un must have quoi :D
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
14 janv. 2011 à 16:40
@ Cantador :

Pour Delphi, il y a l'excellentissime FastMM4...

http://sourceforge.net/projects/fastmm/

A la fermeture du programme, il t'indique toutes les fuites de mémoire et quelles objets n'ont pas été libérés.

Sinon il y a également MemProof qui te permet de voir en temps réel l'utilisation mémoire de ton application, et également de détecter les fuites en fin de programme.

http://delphi.developpez.com/freewares/outils/?page=ConceptionMiseAuPoint

@+,

Cincap
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
14 janv. 2011 à 16:14
@ Cantador, cela permet de faire avancer la connaissance.

Je suis certain qu'avec ces outils, les applications professionnelles délivreraient aussi leur imperfection

@+,

Cincap
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 janv. 2011 à 15:55
tous les bmp avaient leurs .free sur OnDestroy.
les fuites ?
il faut des bons outils..
seul cirec les possèdent et il ne veut pas nous les donner..
il se les gardent rien que pour lui..le vilain..
et évidememnt il a toujours une avance sur nous !
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
14 janv. 2011 à 15:16
@ Cantador,

D'après Cirec il n'y avait pas que TFloc supposé en défaut.

Sur mon PC je n'avais rien détecté d'anormal n'y dans le compilateur ni dans l'onglet performance !

Cirec a des outils de détection à la pointe.

Le résultat est correct, on peut l'améliorer avec des Jpg et une petite musique de fond en *.mid

@+,

Cincap
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 janv. 2011 à 14:13
faut pas coller des fuites là où il n'y en pas.
pour une fois que je n'en avais pas..sniff..
c'est la neige qui a fondu..
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
14 janv. 2011 à 13:16
Bonjour à toutes et à tous,

@ Cirec, le superman du code se manifeste en core au profit de tous les autres;

Je ne m'étais pas aperçu (et je ne sait pas comment le faire pour détecter) qu'il y avait des fuites de mémoires, sous D6 et Seven 64 bits.

Néanmoins, c'est toujours constructif d'être remis à l'ordre.

Je vais modifier cette source.

@+,

Cincap
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
14 janv. 2011 à 13:04
Salut,

dans l'état actuel des choses ... bonjours les fuites !! :
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:

21 - 28 bytes: TBrush x 100

29 - 36 bytes: TPen x 100, Unknown x 2

37 - 44 bytes: TFont x 100, TFloc x 100

61 - 68 bytes: TBitmap x 100

101 - 108 bytes: TBitmapCanvas x 100

117 - 124 bytes: TBitmapImage x 100

149 - 156 bytes: Unknown x 1

---------------------------
OK
---------------------------

pour supprimer toutes fuites il faut modifier le code comme ceci :

...
type
TFloc = class(TObject)
FIma: TBitmap;
Zoom: Integer;
PosX: Single;
PosY: Single;
RIma: TRect;
public
constructor Create;
destructor Destroy; override;
procedure MoveIt;
end;

...

{----------------------------------------------------------------}
{ Destruction d'un flocon }
{----------------------------------------------------------------}
destructor TFloc.Destroy;
begin
FIma.Free;
inherited Destroy;
end;

...

procedure TFTriumvirat.FormDestroy(Sender: TObject);
var
I: Integer;
begin
{ Destruction des flocons }
For i := 1 To MaxFloc Do
AFloc[i].Free;

BmpFond.free;
BmpInvisible.free;
BmpImage1.Free;
BmpImage2.Free;
BmpImage3.Free;
end;

...

il y a encore d'autres améliorations à apporter mais du coté des fuites ... c'est réglé :D

Bonne Année à toutes & tous.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
14 janv. 2011 à 10:20
Bonjour cincap,

C'est une bonne idée de reprendre les sources des anciens (ou les anciens sources..),
de les adapter à son gré et d'apporter quelque chose de plus.
Rejoignez-nous
A voir également