Boucle avec de gros traitements

cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007 - 12 nov. 2006 à 18:32
moldov Messages postés 165 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 10 novembre 2008 - 18 nov. 2006 à 18:30
bjr a tous je suis en train de réaliser une visionneuse, jutilise  un stringlist qui contient le nom des fichiers,mais kan mes fichiers dépasses les 200 ou 300 lorqs de la création des vugnettes lappli bloque meme en utilisant application.processmessages. y orait til un moyen de regler ce probleme.
merci davance.
++

9 réponses

cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
12 nov. 2006 à 18:43
jutlise for i:=0 to stringlist.count-1 do
begin
je cree des panels avec un timage
puis je dessine la vignette retrouver ac lunité exif trouvé ici meme
end;

ps:kan on a un petit nombr de fichiers il nya pa de problemes pourtant je libere ttes les vignettes a la fin
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 nov. 2006 à 04:40
un bout de code serait le bienvenus pour optimiser directement.

<hr size="2" width="100%" />Croc (click me)
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
13 nov. 2006 à 11:13
Salut,
créer 300 Vignettes sous forme de TPanel contenant chacun un TImage n'est peut être pas la solution la moins gourmande en mémoire ...

@+
Cirec

<hr size="2" />
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
13 nov. 2006 à 13:06
merci de mavoir répondu
voici la boucle:

for i:=0 to foundlist.count-1 do
begin
thumb:=tthumbimage.Create(self);
thumb.Parent:=scrollbox1;
thumb.Itemindex:=i;
thumb.Nom:=foundlist.Strings[i];
thumb.top:=y;
thumb.left:=x;
jvstatusbar1.Panels[0].Text:=inttostr(i)+'/'+inttostr(foundlist.Count-1);


JPegName:=form1.shelltreeview1.Path+'\'+foundlist.Strings[i];
ExifImage.ReadFromFile(JPegName);


if ReadThumbFromFile(JPegName,Tmpbitmap) then
begin
TFF:=true;
ImageSource := Tbitmap.Create;
Tmpbitmap.SaveToClipboardFormat(AFormat,AData,APalette);
ImageSource.LoadFromClipboardFormat(AFormat,AData,APalette);
end
else
begin
TFF:=false;
ImageSource := TJPEGImage.Create;
ImageSource.LoadFromFile(JPegName);
end;
if scrollbox1.controls[i] is Tthumbimage then
begin
Tthumbimage(scrollbox1.controls[i]).pic.Canvas.StretchDraw(Tthumbimage(scrollbox1.Controls[i]).pic.ClientRect,imagesource);
end;




              inc(x,102);
              if x>scrollbox1.Width-102 then
             begin
             x:=2; inc(y,102);


              end;


                imagesource.Free;
 Application.ProcessMessages;
end;

et pour liberer

procedure TForm1.FREEthumbs;
begin
foundlist.Clear;
 With scrollbox1 Do
Begin
while controlcount-1>0 do
begin
If (Controls[controlcount-1] Is Tthumbimage) Then
(Controls[controlcount-1] As Tthumbimage).Free;
End;


end;


end;

si il y a moyen doptimiser aller y ou sinon yorait il une autre méthode de sy prendre????
merci
++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moldov Messages postés 165 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 10 novembre 2008
13 nov. 2006 à 17:53
Salut,

Est-ce que le thread ne serais pas une solution pour faire du traitement en parallèle ?

Bonne Prog
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
13 nov. 2006 à 18:25
jy avai déja pensé mais g vu plusieur tuto ou cours mais g pas compri grand choze...
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
14 nov. 2006 à 12:57
est-ce que qqn peut me dire ce que sa donerai avec un thread?
merci
0
cs_saravana Messages postés 91 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 18 octobre 2007
14 nov. 2006 à 20:30
aucune réponse???
0
moldov Messages postés 165 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 10 novembre 2008
18 nov. 2006 à 18:30
Salut,

Moi quand j'ai utilisé pour la première fois les threads en delphi, j'ai utilisé ce tutorial
http://lberne.developpez.com/delphi/Proc-Thread/Dprocessus_threads.pdf
Et j'y ai reussi alors je pense qu'il te fillera aussi un coup de main.

Bonne Prog
0
Rejoignez-nous