[resolu] freeze lors de transfert FTP (4.20)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] freeze lors de transfert FTP (4.20)

Message par Ar-S »

Salut,

je suis en train de me faire un petit uploader FTP perso très simple.
En gros une simple fenêtre (#WIN) avec un "editeur gadget" (#AFF)
La fenetre est receptive au Glissé Deposé.
Donc en gros je glisse des fichiers sur ma fenêtre et il les up sur un serveur ftp free.

Le logiciel fonctionne, par contre, dès qu'il est en utilisation, il freeze tout mon ecran jusqu'a ce qu'il ai terminé. 2eme soucis, j'aimerai pendant le up que la progression d'affiche dans (#AFF).. et ça n'affiche que dalle.

Voilà ma boucle principale.

Voyez vous ou ça cloche ?

Code : Tout sélectionner

 
   Case #PB_Event_WindowDrop
      FichierDrop$ = EventDropFiles()
      NbrFichier  = CountString(FichierDrop$, Chr(10)) + 1
      For i = 1 To NbrFichier
        MonFichier$ = StringField(FichierDrop$, i, Chr(10))
        If OpenFTP(0, "ftpperso.free.fr","USER","MOTDEPASSE",1); A essayer avec vos passe et user. 
          NomFichier$=GetFilePart(MonFichier$)
          UpFichier=SendFTPFile(0, MonFichier$, NomFichier$)
          SetGadgetText(#AFF,"Up en cours"+Chr(10)+"du fichier"+Chr(10)+NomFichier$+Chr(10)+Str(FTPProgress(0)))
        Else
          MessageRequester ("Alert","Impossible d'upper le fichier "+NomFichier$)
        EndIf
        
      Next i
      CloseFTP(0)
      SetGadgetText(#AFF,"Terminé")
----edit----

Ok plus de soucis, fallait user avec tact de ftpprogress
Un gars du fofo anglais m'a trouvé la solution. me reste à l'assimiler. :wink:
Dernière modification par Ar-S le jeu. 05/juin/2008 1:50, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Bon à ce que j'ai pu lire sur le fofo anglais il faut utiliser les thread mais alors là, même si je pige le principe de l'exemple de l'aide, je ne vois pas comment l'adapter pour un sendftpfile..


Voilà le code complet (sans les images)

Code : Tout sélectionner

;{ Windows
InitNetwork()

Enumeration
  #WIN
  #AFF
  #BT_X
  #ImageSheep1
  #ImageSheep2
  #Font_AFF
EndEnumeration
;}


;}
;{ Image Plugins
UseJPEGImageDecoder()
;}
;}
Procedure OpenWindow_WIN()
  If OpenWindow(#WIN, 646, 610, 275, 149, "Sheep'Up 0.2", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    StickyWindow(#WIN,1)
    If CreateGadgetList(WindowID(#WIN))
      StringGadget(#AFF, 120, 40, 150, 80, "Bienvenue", #PB_String_BorderLess|#ES_CENTER)
      ButtonGadget(#BT_X, 120, 130, 150, 15, "Quitter", #BS_FLAT)
      ; Gadget Fonts
      SetGadgetFont(#AFF, LoadFont(#Font_AFF, "Minion Pro", 9, 16))
      SetGadgetFont(#BT_X, LoadFont(#Font_AFF, "Minion Pro", 9, 16))
      ; Window Backcolor
      PureCOLOR_SetWindowColor(#WIN, $0)
    EndIf
    EnableWindowDrop(#WIN, #PB_Drop_Files, #PB_Drag_Copy) 
  EndIf
EndProcedure

Procedure AlertThread(Parameter)

  Repeat
    parametre=SendFTPFile(0, MonFichier$, NomFichier$)
    Delay(1000)
  ForEver

EndProcedure

OpenWindow_WIN()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #AFF
        Case #BT_X
          End
      EndSelect
      
    Case #PB_Event_WindowDrop
      FichierDrop$ = EventDropFiles()
      NbrFichier  = CountString(FichierDrop$, Chr(10)) + 1
      For i = 1 To NbrFichier
        MonFichier$ = StringField(FichierDrop$, i, Chr(10))
        If OpenFTP(0, "ftpperso.free.fr","USER","PASS",1);Remplacer USER et PASS par vos identifiant 
          ;SetFTPDirectory(0, "temp")
          NomFichier$=GetFilePart(MonFichier$)
          CreateThread(@AlertThread(), upfile)
          SetGadgetText(#AFF,"Up en cours"+Chr(10)+"du fichier"+Chr(10)+NomFichier$+Chr(10)+Str(FTPProgress(0)))
          ;upfile=SendFTPFile(0, MonFichier$, NomFichier$)

        Else
          MessageRequester ("Alert","Impossible d'upper le fichier "+NomFichier$)
        EndIf
        
      Next i
      CloseFTP(0)
      SetGadgetText(#AFF,"Terminé")
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #WIN
          CloseWindow(#WIN)
          Break
      EndSelect
  EndSelect
ForEver
;
;}
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut Ar-S, faudrait peut-être que les deux chaînes qui sont utilisées dans ton Thread soient globales non? Je dis ça comme ça...

Sinon je vois que ta boucle dans le Thread, elle tourne à l'infini... C'est pas top...
Répondre