Probleme erreur

Résolu
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006 - 22 avril 2005 à 02:53
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006 - 25 avril 2005 à 19:13
salut ,

j'ai fait un programme qui doit crer des composant
tout fonctionne bien sauf quand je quitte, la ya plein
d'erreur qui apparaisse
je comprend vraiment pas pq

voici mon code :

Procedure  TForm1.CommencerCaptures(Frequence : Integer) ;  
var
x : integer ;
begin
For x := 1 to Length(Panels) do
begin
Panels[x] := TPanel.Create(self);
With Panels[x] do
begin
  Parent := ScrollBox1 ;
  Width := ScrollBox1.Width - 30 ;
  Height := Width ;
  Left := 5 ;
  Top := ((x-1) * Width) + (x * 10) ;
end;
Images[x] := TImage.Create(self);
With Images[x] do
begin
  Parent := Panels[x] ;
  Width := Panels[x].Width - 20 ;
  Height := Width ;
  Left := 10 ;
  Top := 10 ;
  Stretch := True ;
  Tag := x ;
  OnClick := ImageClick ;
end;
Capturer(Images[x]) ;
Pause(Frequence);
Application.ProcessMessages ;
end;
Timer1.Enabled := False ;
end

procedure Capturer(Image : TImage);
begin
Image.Picture.Bitmap.Width := Screen.Width ;
Image.Picture.Bitmap.Height := Screen.Height ;
BitBlt(Image.Picture.Bitmap.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, GetDC(GetDesktopWindow), 0, 0, SrcCopy);
ReleaseDC(GetDesktopWindow, GetDC(GetDesktopWindow));
end;

11 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
22 avril 2005 à 22:43
Modif 1 : Garantir que la fenetre se reaffiche dans tous les cas et invalider le bouton pour eviter les clicks non désirés !!

procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(Panels, 10) ;
SetLength(Images, Length(Panels)) ;
ShowWindow(Handle, SW_SHOWMINIMIZED) ;
button1.Enabled := false ;
try
CommencerCaptures(500);
finally
ShowWindow(Handle, SW_NORMAL) ;
button1.Enabled := true ;
end ;
end;

Modif 2 : Attention les "array of" commence à partir de 0 et non 1 !!! (à modifier dans CommencerCaptures et DeSelection d'où l'erreur !!

For x : = 0 to Length(Panels)-1 do

Modif 3 : Désallouer les objets à la fin ce serait quand même mieux, non

procedure TForm1.Button2Click(Sender: TObject);
var
i : integer ;
begin
For i := 0 to Length(Panels)-1 do
begin
if ( Images[i]<>NIL ) then TImage(Images[i]).Free ;
if ( Panels[i]<>NIL ) then TPanel(Panels[i]).Free;
end ;
SetLength(Images, 0) ;
SetLength(Panels, 0) ;
close ;
end;

Cordialement.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
22 avril 2005 à 08:57
On doit aussi deviner les erreurs ?


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
22 avril 2005 à 16:49
arf ouais chu désespérer pq mon programme fonctionne bien durant l'exécution
mais quand je veux le quitter ...

tu peux telecharger les sources a cette adresse ;

http://copsoft.dyndns.org:81/ecureuil/Source.zip
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 05:21
k kool merci

mais 1 : un tableau dynamique commence a 0 et se termine a length(tableaudinamique) ?

2 : pour libérer le tableau on peut pas faire Tableau.free tout simplement ?
et c quand qu'il faut le libérer et pourquoi ?
0

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

Posez votre question
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 06:52
J'ai tout fait ce que tu ma dis mais ca bug encore quand je quitte?
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 06:55
a non...
ca marche J'avais juste pas mi length(panels)-1 ...?
length(tableau) renvoie la taille + 1 ??
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 06:58
Si je ne libère pas le tableau le programme ne bug pas
Est ce que je suis oubligé de le libérer?
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
24 avril 2005 à 15:19
Non, Delphi s'en charge, MAIS c'est une question de principe; pour moi à chaque allocation doit correspondre une desallocation.

Cordialement.
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
24 avril 2005 à 20:36
ok
et pourquoi length(Tableau) renvoie la taille du tableau + 1?
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
25 avril 2005 à 00:59
NON, Length(Tableau) te renvoie le nombre d'éléments, c'est à dire la taille exacte de ton tableau.

Quelques exemples :

Suppose que tu as 4 éléments commençant à partir de 0 :
0 1 2 3 = 4 éléments

Length (Tableau) =4 mais la boucle for ira de 0 à 3= (4-1)

suppose maintenant que tu as 8 éléments commençant à partir de 0 :
0 1 2 3 4 5 6 7 = 8 éléments

Length (Tableau) =8 mais la boucle for ira de 0 à 7=(8-1)

Cordialement.
0
cricri_b34 Messages postés 223 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 février 2006
25 avril 2005 à 19:13
ok merci
0
Rejoignez-nous