[Delphi] Impossible de liberer la mémoire d´un gif

Impossible de liberer la mémoire d´un gif [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 26-11-2005 à 19:15:05    

Voila ma ptite procedure bidon
 
procedure TForm1.Button1Click(Sender: TObject);
var
gif:Tgifimage;
begin
gif:=Tgifimage.Create;
gif.LoadFromFile('C:\Documents and Settings\Pilou\Mes documents\smiley\Grands_Smileys\3d-brosse-ses-dents.gif');
bloc.InsertPicture('',gif,rvvaBaseLine);
bloc.AnimationMode:=rvanionformat;
bloc.Format;
gif.Free;
 
Avec le gif.free , j´ai une exception.
sans le gif .free , ca marche nickel .
Le probème ne vient pas de la procedure insertpicture qui vient du composant Trichview
 
LE seul probème c´est que chaque image rajoutée fait augmenter la mémoire utilisée par le programme . Comment éviter ca  ?

Reply

Marsh Posté le 26-11-2005 à 19:15:05   

Reply

Marsh Posté le 27-11-2005 à 09:38:31    

je ne connais pas trop Richview (je devine que bloc est un TRichView) mais il y a de forte chance pour qu'en interne il utilise ton gif donc tu ne pourras le supprimer qu'après la libération de bloc, vérifie dans la doc si par hasard en libérant bloc celui-ci ne libère pas automatiquement les images...

Reply

Marsh Posté le 27-11-2005 à 20:41:18    

Oui c´est un Trichview.  
le but est d´afficher le gif dans le Trichview .
Le problème , c´est que je ne veux pas liberer boc...  
et j´insere dedans plein d´image qui sont souvent les memes .  
En gros il peut y avoir 200 images .. mais il y aura une dizaine d´image differrentes
 
Si je rajoute chaque image avec le code lahaut. la mémoire prend supra cher.
 
autre solution : Creer une dizaine de variable Tgifimage qui contienne chacune un gif different. et inserer la variable que je souhaite dans mon Trichview...
 
mais n´y a t´il pas plus simple ! ?

Reply

Marsh Posté le 28-11-2005 à 08:59:20    

si tes images sont les même il est surement inutile de les recréer à chaque fois, tu dois pouvoir faire plusieur bloc.InsertPicture('',gif,rvvaBaseLine) du même gif

Reply

Marsh Posté le 28-11-2005 à 13:46:54    

C'est un peu normal que la mémoire augmente. Si tu le mets dans le TRichview, il faut bien que le TRichview stocke le gif quelque part...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-11-2005 à 20:30:33    

antp a écrit :

C'est un peu normal que la mémoire augmente. Si tu le mets dans le TRichview, il faut bien que le TRichview stocke le gif quelque part...


 
Tout à fait daccord mais quand c´est le meme gif? est ce obligatoire de reserver 2 fois la memoire ?  
si je les ajoute a deux moment differents.  
 
gif.loadfromfile(toto.gif)
insertpicture('',gif,.......);
 
gif.loadfromfile(tota.gif)
insertpicture('',gif,.......);
 
gif.loadfromfile(tata.gif)
insertpicture('',gif,.......);
 
//et hop  re toto.gif !
 
gif.loadfromfile(toto.gif)
insertpicture('',gif,.......);

Reply

Marsh Posté le 28-11-2005 à 23:05:47    

Je sais pas, il faut tester. J'expliquais juste le pourquoi de l'augmentation mémoire


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed