Impossible de liberer la mémoire d´un gif [Delphi] - Delphi/Pascal - Programmation
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...
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 ! ?
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
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...
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,.......);
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
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 ?