[Delphi] Composants FTP - Threads NEED HELP

Composants FTP - Threads NEED HELP [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 01-04-2002 à 17:10:30    

Salut tout le monde (j'espère kil i en aura au moins),
 
Je développe un client FTP particulier pour un site (celui de Max Evans sur ce forum) et je suis confronté à un problème :
J'utilise les composants FTP Indy mais ceux çi font freezé l'application, g pourtant mis le composant Anti Freeze.
Quand par exemple ça télécharge, si j'appuies sur le bouton annuler je peux attendre un bon quart d'heure avant que ça s'arrète. Pareil, g un compteur ki indique le nombre d'octet téléchargé et il se met à jour tt les 30-45 secondes minimum.
 
Pour parer à cela, on m'a conseillé d'utiliser soit les composant ICS soit les threads mais je ne vois pas en quoi les composant ICS vont résoudre mon problème et comment ça marche car je compprend pas trop (tuto qq part ?) et les thread je comprend pas ce que c (enfin je vois en gros) mais à mon avis c cho à implémenter non ?
 
C quoi le mieux a votre avis et comment le mettre en euvre ?
 
PS : je suis newbie n'oubliez pas  :hello:  :hello:

 

[jfdsdjhfuetppo]--Message édité par Je@nb--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 01-04-2002 à 17:10:30   

Reply

Marsh Posté le 01-04-2002 à 17:14:06    

L'anti-freeze c'est une vaste masquarade, ca sert pas à grand chose...
 
Je te conseille de le foutre dans un thread effectivement, et oui c'est chaud a implémenter, mais c'est la que c'est fun, non? ;-)
 
Et reste avec Indy, y a des dizaines de gens qui y bossent, c'est supporté par Borland tandis qu'ICS c'est juste une personne (que je salue au passage, c'est un belge, un gars super sympa!).


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 01-04-2002 à 17:18:18    

Buitoni a écrit a écrit :

 
Et reste avec Indy, y a des dizaines de gens qui y bossent, c'est supporté par Borland tandis qu'ICS c'est juste une personne (que je salue au passage, c'est un belge, un gars super sympa!).  




 
Sympa et bon  :jap: :)
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 01-04-2002 à 17:18:33    

Merci de m'avoir répondu, v tenter les Thread alors si tu le dis  :jap:  :jap:  :jap:  :jap:  
 
Par conte va falloir que je cherche comment c kon fais ça, car g commencé Delphi y a disons 1 mois à même pas 1h par jour  :hap:  :hap:  :hap:  :hap:

Reply

Marsh Posté le 01-04-2002 à 17:21:44    

Alors g trouvé un tuto mais en anglais lol :  
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
 
je continue ma recherche  :hello:  :hello:

Reply

Marsh Posté le 01-04-2002 à 17:36:26    

File/New/Thread
 
And voila :-D
 
Tu devrais lire l'aide sur les apis des threads, même si tu les utilises pas directement ca te donnera une idée de comment ca marche.


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 01-04-2002 à 20:31:01    

:ouch:  :ouch:  C comme ça kon créé des Thread ??  :ouch:  :ouch:  :ouch:  
Je pensais à un truc plus cho. V regardé l'aide oué car g pas trouvé grand chose à part

Reply

Marsh Posté le 01-04-2002 à 21:04:33    

C'est comme ca que tu evites de tapper la base pour ton thread, oui.
 
En résumé, tu l'utilises comme une classe normale, sauf que pour tout ce qui ne touche pas au thread en lui même, faut faire gaffe.
 
Genre pour modifier le contenu d'un Edit, tu dois passer par un Synchronize, etc, etc...


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 01-04-2002 à 21:14:40    

Oula oué car moi y a plein de trucs en rapport  :D  :D

Reply

Marsh Posté le 01-04-2002 à 21:17:49    

Synchronize F1 alors ;-)
 
Si tu fais pas ca, ca va t'exploser dans la tronche  :D


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 01-04-2002 à 21:17:49   

Reply

Marsh Posté le 01-04-2002 à 21:19:12    

Lol alors v tester pour un edit alors  :lol:  :lol:  :lol:

Reply

Marsh Posté le 01-04-2002 à 22:56:39    

T1 j'arrive pas du tout à comprendre comment faire pour faire passer tout ce ki touche aux composant FTP sur l'autre Thread.
G compris comment faire pour passer du thread au thread principal en appellant une procédure (d'ailleur je dois l'appeller où ?)
Bref, je galère trop là  :cry:  :cry:  :cry:  :cry:  :cry:

Reply

Marsh Posté le 02-04-2002 à 02:18:43    

C'est comme ca qu'on apprends  :p  
 
Mais bon, pour les futures questions je pense qu'a chaque fois un bout de code s'impose, non?


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 02-04-2002 à 09:43:41    

Oki lol v montrer quelques bout de code parce que là ça comence à être cho.
Je le montre une fois que mon unique heure du cours du matin soit passée, car fo que j aille là  :D  :D  :D

Reply

Marsh Posté le 02-04-2002 à 11:54:16    

Me revoila alors v montrer un peu de mon code :
déjà les composant imlémenté sur ma form :
      Type           Name

  • ChangeBox CBSaison
  • TListView List
  • 2 RadioButton vf et vo
  • TSaveDialog save
  • TIdFTP ftp
  • TPopUpMenu fichier avec dedans un "bouton" (ché pas comment c que ça s'appelle) où c marqué Télécharger {lsdl}
  • TButton btarreter
  • TLabel LBDL
  • TProgressBar PBDL


(le reste n'a pas d'utilité : label, bouton pour quitter ....)
La form principale

  • TFmprinc Fmprinc


 
G fais une procédure pour changer de dossier qui est appellée :

  • au changement de CBSaison
  • au click sur vf ou vo


Code :
  1. procedure Tfmprinc.change(tsaison,voix: string);
  2. var
  3. saison : string;
  4. ListItem : TListItem;
  5. i : integer ;
  6. dossier : TStringList;
  7. begin
  8. dossier := TStringList.Create;
  9. if ftp.Connected then
  10. begin
  11. try  ftp.ChangeDirUp;
  12. ftp.ChangeDirUp; //on remonte à la racine ki est 2 répertoire au dessus (si vous trouvez qqch de plus simple pour aller direct en ho se serai mieux)
  13.   if tsaison = 'Saison 3' then saison := 'saison3'
  14.   else if tsaison = 'Saison 2' then saison := 'saison2'
  15.   else saison := 'saison1' ; //nom des répertoire en fn du contenu du changebox
  16.   ftp.ChangeDir(saison); //on va dans le répertoire correspondant à la saison   
  17. ftp.ChangeDir(voix); // on va dans le répertoire vf ou vo   
  18. ftp.List(dossier,'*.avi',false); // on enregistre dans dossier la liste sommaire (nom de fichier uniquement) des .avi
  19. except showmessage('Marche po'); end; //sinon ça marche pas
  20. List.Clear; //on vide le TlistView
  21. for i:=0 to dossier.Count-1 do
  22.   begin
  23.     ListItem := List.Items.Add; //on affiche dans le TlistView le nom du fichier     
  24. ListItem.Caption := dossier.Strings[i]; // élément de la 1ere colonne
  25.   end;
  26. end
  27. else
  28.   try ftp.Connect(); change(CBsaison.Text,voix)except ShowMessage('Connection Impossible');  end; //si on est pas connecter on essaie de le faire
  29. dossier.Free;
  30. end;
  31. Voila pour la procédure de changement de saison.
  32. Alors je veux mettre dans le thread ftp.connect et le ftp.changedirup ftp.changedir(saison) ... ftp.List(dossier,'*.avi',false)


Et je ne c pas comment on fait ça
 
Sinon on m'a parlé de BeginThread et EndThread, mais c moins bien qu'une classe non ?

 

[jfdsdjhfuetppo]--Message édité par Je@nb--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 02-04-2002 à 15:41:30    

Personne ?
[:schumacher]

Reply

Marsh Posté le 02-04-2002 à 18:55:50    

[:schumacher]  
:hap:  :hap:  :hap:  :hap:

Reply

Marsh Posté le 02-04-2002 à 20:06:55    

Sorry, je regarderai a ton code plus tard, je t'oublie pas mais je suis trop a la bourre la  :D


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 02-04-2002 à 20:38:51    

lol oki c sympa  :hello:  :hello: .
Tu es le seul à avoir utiliser les fonctionnalité réseaus et les thread sur Delphi ?
 
D'ailleur v recentrer le sujet sur les thread

Reply

Marsh Posté le 02-04-2002 à 20:45:50    

Non, poire est aussi apte que moi dans le domaine  ;)


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 02-04-2002 à 20:52:05    

Bon alors, tu fais le thread comme je t'ai dis, et tu fous des propriétés a la classe (ou des variables publiques comme tu veux) avec les infos dont tu as besoin dans la procédure, ok?
 
Ensuite tu crees ton thread et tu fous le OnTerminate a une procédure dans ton form.
 
Et dans l'execute de ton  thread tu fais ton traitement et tu stockes les resultats dans des variables publiques de nouveau, y a plus qu'a utiliser ses variables dans la procédure appelée par le OnTerminate et voila.
 
En gros résumé hein  :sol:


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 02-04-2002 à 20:52:07    

:hello:  :hello:  :hello:  
Merci pour le prog ;) :jap:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 02-04-2002 à 21:02:01    

Buitoni a écrit a écrit :

Bon alors, tu fais le thread comme je t'ai dis, et tu fous des propriétés a la classe (ou des variables publiques comme tu veux) avec les infos dont tu as besoin dans la procédure, ok?
 
Ensuite tu crees ton thread et tu fous le OnTerminate a une procédure dans ton form.
 
Et dans l'execute de ton  thread tu fais ton traitement et tu stockes les resultats dans des variables publiques de nouveau, y a plus qu'a utiliser ses variables dans la procédure appelée par le OnTerminate et voila.
 
En gros résumé hein  :sol:  




 
 :heink:  :heink:  :heink: Rien compris  :??:  :??:  :??:

Reply

Marsh Posté le 02-04-2002 à 21:18:47    

Buitoni a écrit a écrit :

Non, poire est aussi apte que moi dans le domaine  ;)  




eh eh pas pour les threads  :D  
Et C toi le pro des Indy :D  :jap:  
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-04-2002 à 22:18:52    

Buitoni a écrit a écrit :

Non, poire est aussi apte que moi dans le domaine  ;)  




 
Bel essai de déléguation de la responsabilité du topic sur Poire :D


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

Marsh Posté le 02-04-2002 à 22:19:12    

[SDF]Poire a écrit a écrit :

 
eh eh pas pour les threads  :D  
Et C toi le pro des Indy :D  :jap:  
 :hello:  




 
Bel essai pour faire "comme si" tu ne savais rien :D


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

Marsh Posté le 02-04-2002 à 22:28:11    

antp a écrit a écrit :

 
 
Bel essai pour faire "comme si" tu ne savais rien :D  




non si j'avais su j'aurais répondu.... et tu peux demander à Buitoni G une incompatibilité avec les threads pour le moment... mais j'essaye de patcher....
quand ce qui est des Indy.... ça m'a tjs bruler les touches du clavier.... donc j'y touche pas pour le moment....
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-04-2002 à 22:44:08    

Moi c'est pas mieux : j'ai jamais touché aux threads, et à part le TIdHTTP j'ai jamais utilisé les compos Indy :D


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

Marsh Posté le 02-04-2002 à 22:44:09    

Je@nb a écrit a écrit :

 
 
 :heink:  :heink:  :heink: Rien compris  :??:  :??:  :??:  




 
 :(  
 
Relis  3 fois sans respirer  [:banzai]


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 02-04-2002 à 22:44:38    

antp a écrit a écrit :

Moi c'est pas mieux : j'ai jamais touché aux threads, et à part le TIdHTTP j'ai jamais utilisé les compos Indy :D  




 
Vous battez pas... Vous voulez pas répondre on a compris  :D


---------------
Vendredi c'est Buitoni
Reply

Marsh Posté le 02-04-2002 à 22:46:40    

Buitoni a écrit a écrit :

 
 
Vous battez pas... Vous voulez pas répondre on a compris  :D  




 :p  
pas vrai mais pas envie de m'y mettre  :ange:  
Et je suis pas en mesure de répondre.... on peut pas répondre à tout... (heureusement....)
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 03-04-2002 à 12:26:00    

Après avoir lu, ton message et l'aide, je comprend un peu mieux mais alors v devoir faire thread pour le listage des répertoire, un thread pour le DL du fichier alors je pense.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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