papyvore
Messages postés223Date d'inscriptionsamedi 15 novembre 2003StatutMembreDernière intervention16 décembre 2021
-
12 déc. 2017 à 11:02
papyvore
Messages postés223Date d'inscriptionsamedi 15 novembre 2003StatutMembreDernière intervention16 décembre 2021
-
12 déc. 2017 à 19:10
Bonjour,
j'ai un problème avec ce code
SavImage := TSavImage.Create; //ThumbItemsList.OwnsObjects := True; for I := 0 to ThumbList.Count - 1 do begin msThumbStream.Seek(0, soFromBeginning); // on se repositionne au début
begin JPG := tJpegImage.Create; // SavImage.Img := tJpegImage.Create; try JPG.LoadFromStream(msThumbStream);
SavImage.Index := I; SavImage.Img := JPG; SavImage.Name := IntToStr(I) + '.jpg'; // JPG.SaveToFile(SavImage.Name); //ok ça marche except // pour suivre les exceptions . // ShowMessage('Erreur dans ThumbSearch.Create(ADirectory: string) index = '+IntToStr(i)); end;
JPG.Free; end;
ThumbItemsList.AddObject(SavImage.Name, SavImage) ; //ne marche pas end;
si je fait
JPG.SaveToFile(SavImage.Name);
mes images se sauvegardent normalement
donc elles existent bien ,mais c'est pas ce que je cherche .Je voudrais les mettre dans une stringlist pour les rappeler à la demande .
En faisant du pas a pas je me rend compte que AddObject ajoute bien "apparemment" les éléments.
je lis la liste avec
ChercheJPG.GetInfoList(i , TimgInfo); procedure ThumbSearch.GetInfoList(Index: integer; out ThumbInfo: TSavImage); begin if (Index >= 0) and (Index < ThumbItemsList.Count) then ThumbInfo := (ThumbItemsList.Objects[Index] as TSavImage); end;
Et là la liste me retourne toujours quelque soit l'index ,le dernier enregistrement fait.
autrement dit la liste contient x fois le dernier enregistrement fait.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 Modifié le 12 déc. 2017 à 15:39
Alors c'est normal que tous les indexes pointent sur le dernier
élément enregistré !!!
pourquoi ?
tu crées 1 seul SavImage que tu modifies à chaque passage
mais c'est le même objet !!!
il te faut créer autant de SavImage que de Jpeg à sauvegarder et surtout ne pas les libérer de suite à faire dans le FormDestroy par exemple il en va de même pour les Jpeg que tu crées
tu peux automatiser tout ça en en tenant compte dans le destructeur de TSavImage( Img.Free) et en mettant ThumbItemsList.OwnsObjects à True;
12 déc. 2017 à 19:10
je corrige aussi le seek.
merci encore