[OK] FTP envoi asynchrone

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 :

[OK] FTP envoi asynchrone

Message par Ar-S »

Toujours dans mon projet de programme FTP, je ne comprends pas pourquoi je n'ai qu'un fichier qui s'upload.

Pour l'exemple :
Ma liste files_PC() est global et contient par exemple "c:\toto.txt" et "c:\titi.txt"
Pourtant le debug affiche bien les noms des fichiers.

Qu'ai je oublié ?

Code : Tout sélectionner

If OpenFTP(#FTP, "hote", "user", mdpg$)
              
              ForEach files_PC()
                
                MonFichier$ = files_PC()
                Debug "Fichier a upper : "+MonFichier$
                
                NomFichier$=GetFilePart(files_PC())
                filesize = FileSize(MonFichier$)
                
                ftp_progress = FTPProgress(#FTP)
                SendFTPFile(#FTP, MonFichier$, NomFichier$,#True)
                
                Debug "Nom fichier uppe : "+NomFichier$
                
                
              Next files_PC()
              
              CloseFTP(#FTP)
              SetGadgetText(#AFF,"Terminé")
              
            EndIf
merci.


Suite avec probleme en mode asynchrone.

Code : Tout sélectionner

If OpenFTP(#FTP, "xxx", "xxx", mdpg$)
							
							ForEach files_PC()
								
								MonFichier$ = files_PC()
								Debug "Fichier a upper : "+MonFichier$
								
								NomFichier$=GetFilePart(files_PC())
								filesize.q = FileSize(MonFichier$)
								
								SendFTPFile(#FTP, MonFichier$, NomFichier$,#True)
								ftp_progress = FTPProgress(#FTP)
								
								Select ftp_progress
										
									Case #PB_FTP_Started
										SetGadgetColor(#AFF,#PB_Gadget_BackColor,#CLR_ON)
										SetGadgetState(#bar2, 0)
										SetGadgetText(#AFF,"Up du fichier "+ NomFichier$)
										
										
									Case #PB_FTP_Finished
										
										SetGadgetState(#bar1, ListIndex(files_PC()) * 100 / CountList(files_PC()))
										SetGadgetState(#bar2, 100)
										
										
									Case #PB_FTP_Error
										; Stop le transfert
										Break
										
										If filesize<>0
											SetGadgetState(#bar2, ftp_progress * 100 / filesize)
										EndIf
										
								EndSelect

								Debug "Nom fichier uppe : "+NomFichier$
								
								
							Next files_PC()
							
							CloseFTP(#FTP)
							SetGadgetText(#AFF,"Terminé")
							SetGadgetColor(#AFF,#PB_Gadget_BackColor,#CLR_OFF)
							
						EndIf

Dernière modification par Ar-S le mer. 11/janv./2012 1:57, modifié 3 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: FTP le retour de la vengeance...

Message par flaith »

.. :x
Dernière modification par flaith le mar. 10/janv./2012 17:05, modifié 1 fois.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: FTP le retour de la vengeance...

Message par graph100 »

après 1ere observation, et sans avoir testé ni le code ni la correction,
ton problème vient de la ligne

Code : Tout sélectionner

SendFTPFile(#FTP, MonFichier$, NomFichier$,#True)
le flag #true rend l'envoi asynchrone, ce qui veut dire que c'est effectué en tache de fond.
L'aide de pb précise qu'un seul envoi est possible à la fois.

Cette ligne de code ne bloque donc pas ton code, qui demande trop rapidement l'envoi du fichier suivant, ce qui n'est donc pas effectué.

la correction serai, pour un envoi synchrone (bloque le prog jusqu'à fin de la commande) :

Code : Tout sélectionner

SendFTPFile(#FTP, MonFichier$, NomFichier$, #False)
si tu veux un envoi asynchrone c'est plus compliqué, il faut attendre que le fichier soit envoyé avec un code de ta sauce, mais ca te permettra de faire une barre de progression par exemple :)
(regarder l'aide de pb à SendFTPFile() )
Dernière modification par graph100 le mer. 11/janv./2012 0:51, modifié 1 fois.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: FTP le retour de la vengeance...

Message par Ar-S »

graph100 a écrit :après 1ere observation, et sans avoir tester ni le code ni la correction,
ton problème vient de la ligne

Code : Tout sélectionner

SendFTPFile(#FTP, MonFichier$, NomFichier$,#True)
le flag #true rend l'envoi asynchrone, ce qui veut dire que c'est effectué en tache de fond.
L'aide de pb précise qu'un seul envoi est possible à la fois.

Cette ligne de code ne bloque donc pas ton code, qui demande trop rapidement l'envoi du fichier suivant, ce qui n'est donc pas effectué.

la correction serai, pour un envoi synchrone (bloque le prog jusqu'à fin de la commande) :

Code : Tout sélectionner

SendFTPFile(#FTP, MonFichier$, NomFichier$, #False)
si tu veux un envoi asynchrone c'est plus compliqué, il faut attendre que le fichier soit envoyé avec un code de ta sauce, mais ca te permettra de faire une barre de progression par exemple :)
(regarder l'aide de pb à SendFTPFile() )
Bingo Graph100 !
J'avais oublié cette histoire d'asynchrone.

Le mieux serait tout de même que ce mode asynchrone fonctionne, mais je galère avec l'utilisation du FTPProgress(#Ftp)
Pour ce qui est de la barre de progression, je ne pense pas avoir de soucis, même en synchrone.

je vous tiendrai au jus.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: FTP le retour de la vengeance...

Message par Ar-S »

Bon mes tests asychrones foirent..
Pour info #bar2 et #bar1 sont mes barres de progression.

Un exemple un peu plus explicite de l'utilisation de FTPProgress(#FTP) dans la doc ferait plaisir à l'occasion.

Code : Tout sélectionner

If OpenFTP(#FTP, "xxx", "xxx", mdpg$)
              
              ForEach files_PC()
                
                MonFichier$ = files_PC()
                Debug "Fichier a upper : "+MonFichier$
                
                NomFichier$=GetFilePart(files_PC())
                filesize.q = FileSize(MonFichier$)
                
                SendFTPFile(#FTP, MonFichier$, NomFichier$,#True)
                ftp_progress = FTPProgress(#FTP)
                
                Select ftp_progress
                    
                  Case #PB_FTP_Started
                    SetGadgetColor(#AFF,#PB_Gadget_BackColor,#CLR_ON)
                    SetGadgetState(#bar2, 0)
                    SetGadgetText(#AFF,"Up du fichier "+ NomFichier$)
                    
                    
                  Case #PB_FTP_Finished
                    
                    SetGadgetState(#bar1, ListIndex(files_PC()) * 100 / CountList(files_PC()))
                    SetGadgetState(#bar2, 100)
                    
                    
                  Case #PB_FTP_Error
                    ; Stop le transfert
                    Break
                    
                    If filesize<>0
                      SetGadgetState(#bar2, ftp_progress * 100 / filesize)
                    EndIf
                    
                EndSelect

                Debug "Nom fichier uppe : "+NomFichier$
                
                
              Next files_PC()
              
              CloseFTP(#FTP)
              SetGadgetText(#AFF,"Terminé")
              SetGadgetColor(#AFF,#PB_Gadget_BackColor,#CLR_OFF)
              
            EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: FTP le retour de la vengeance...(suite)

Message par graph100 »

Bon, je n'ai toujours pas testé, car je n'ai pas le temps de faire des fichiers tests et de me battre avec le ftp pour que ça marche, mais comme tu dois avoir un autre bout de prog, tu dois pouvoir tester ça rapidement ;)

Voila ma proposition :

Code : Tout sélectionner

Global NewList files_PC()

Procedure Fenetre_de_suivie_des_up_fichier(*etat)
	Protected event.l
	
	
	windows = OpenWindow(#PB_Any, 0, 0, 400, 100, "Suivie Upload", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
	If windows
		Text_Id = TextGadget(#PB_Any, 10, 10, 380, 20, "", #PB_Text_Border)
		
		text_2Id = TextGadget(#PB_Any, 10, 40, 380, 20, "", #PB_Text_Border) : HideGadget(text_2Id, #True)
		Progress_Id = ProgressBarGadget(#PB_Any, 10, 40, 380, 20, 0, 1000, #PB_ProgressBar_Smooth)
	EndIf
	
	etat = 0 ; 0 = pas de fichier en cours de transfer, sinon : 1, on ne lance un transfert que quand etat = 0, et il passe de suite à 1
	FirstElement(files_PC())
	
	Repeat
		event = WaitWindowEvent(100)
		
		
		If etat = 0 ; pas de fichier en cours -> on lance un transfert
			
			;{ on lance le transfert d'un fichier
			
			etat = 1
			
			NomFichier$ = GetFilePart(files_PC())
			filesize.q = FileSize(MonFichier$)
			
			;{ pour cacher les gadget progress / text alternativement
			hide = 1
			HideGadget(Progress_Id, #True)
			HideGadget(text_2Id, #False)
			;}
			
			SendFTPFile(#FTP, MonFichier$, NomFichier$, #True)
			
			; on met à jour l'affichage du gadget texte pour avoir l'info
			SetGadgetText(Text_Id, "'" + NomFichier$ + "' en cours de transfert (" + Str(ListIndex(files_PC())) + "/" + Str(ListSize(files_PC())))
			
			; on avance dans la liste de fichier
			If NextElement(files_PC()) = 0
				event = #PB_Event_CloseWindow ; si il n'y a plus de fichier dans la liste, on lance la fermeture de la fenetre, c'est fini ^^
			EndIf
			
			;}
			
		Else ; un fichier est en cours, on regarde donc son état
			
			;{ on suit le tranfert du fichier jusqu'à ce qu'il plante, qu'il se termine, ou qu'il soit interrompu par la fermeture de la fenetre
			
			res.q = FTPProgress(#FTP)
			
			If res = #PB_FTP_Started
				If hide = 0
					HideGadget(Progress_Id, #True)
					HideGadget(text_2Id, #False)
					hide = 1
				EndIf
				
				SetGadgetText(text_2Id, "Initialisation du transfert...")
			If res = #PB_FTP_Finished
				If hide = 0
					HideGadget(Progress_Id, #True)
					HideGadget(text_2Id, #False)
					hide = 1
				EndIf
				
				SetGadgetText(text_2Id, "Le transfert s'est terminé correctement.")
				
				etat = 0 ; on permet de passer au fichier suivant
			If res = #PB_FTP_Error
				If hide = 0
					HideGadget(Progress_Id, #True)
					HideGadget(text_2Id, #False)
					hide = 1
				EndIf
				
				SetGadgetText(text_2Id, "Erreur lors du transfert...")
				
				; mettre une boite de dialogue pour interrompre si besoin
				
				etat = 0 ; on permet de passer au fichier suivant
			Else
				If hide = 1
					HideGadget(text_2Id, #True)
					HideGadget(Progress_Id, #False)
					hide = 0
				EndIf
				
				; mise à jour de l'affichage de la progression
				SetGadgetState(Progress_Id, 1000 * res / filesize)
			EndIf
			
			;}
			
		EndIf
		
	Until event = #PB_Event_CloseWindow
	
	CloseWindow(windows)
	
	If etat = 1 ; transfert en cours : on annule
		AbortFTPFile(#FTP)
	EndIf
	
EndProcedure



If OpenFTP(#FTP, "xxx", "xxx", mdpg$)
	
	thread_id = CreateThread(@Fenetre_de_suivie_des_up_fichier(0)
	
	; BOUCLE DANS TON PROGRAMME
	; qui fait d'autre choses pendant le transfert, il ne faut pas que le programme se finisse avant le thread, sinon les fichiers ne seront pas transférés
	
	Repeat
		Delay(500)
	Until IsThread(thread_id) = 0
	
	CloseFTP(#FTP)
	
EndIf
L'idée est de géré tout le transfert en asynchrone, avec un thread. le thread c'est pas obligé, tu peux sortir la boucle d'évènement dans le code principal pour faire d'autre trucs à coté, mais c'est comme ca que j'ai fait.

Il faut faire gaffe, cependant, car comme ce que j'ai n'ai qu'un petit bout du programme, il n'est pas 'threadsafe', c'est à dire que si tu manipules la liste chainée ailleurs dans le code, en même temps que le thread se déplace dedans, ca va faire nimp. tu risques d'upoad plusieurs fois les mêmes fichiers, ou de carrément planté.
Il n'est pas difficile de rendre le truc safe, mais il faut avoir tout le code.

Voila ;)

@Flaith : bah c'était bon ce que tu avais écris. J'étais en train de poster quand l'as fait :o
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: FTP le retour de la vengeance...(suite)

Message par Ar-S »

Merci pour cette méthode, (que je vais coller dans mon dossier 'code ftp ^^')
Je m'en suis sortie de la façon suivante.
J'obtiens un simple client permettant l'upload par glisser/déposer

Au final, le but est d'échanger des trucs avec mon frangin. On est tout le temps à se parler via skype et le transfert de fichier pour le moindre fichier est ultra lent.

Voilà donc la partie Uploader

Code : Tout sélectionner

; Sheep Up ! - Ar-S
; 0.3

InitNetwork()
;EnableExplicit
Define.l event
Define.l Quit : Quit = 0

Define.l i

Define.l uploading : uploading = 0 
Define.l ftp_progress
Define.l filesize
Define.l FichierDrop$
NewList files_to_upload.s()


Enumeration
  #WIN
  #AFF
  #BT_X
  #ImageSheep1
  #ImageSheep2
  #Font_AFF
  #Image_Image_5
  #Image_Image_6
  #PBar1
  #PBar2
EndEnumeration
;}

;{ Included Images
DataSection
  Image_Image_5:
  
  Data.l $E0FFD8FF,$464A1000,$01004649,$64000002,$00006400,$1100ECFF,$6B637544,$00010079,$00000004,$FF000024,$412100EE,$65626F64
  Data.l $00C06400,$03010000,$02031000,$00000603,$00009B03,$00005806,$DBFFBE0B,$0E008400,$0A090909,$0A0A0E09,$0B0D140E,$1117140D
  Data.l $17110E0E,$1716161B,$1A1B1616,$16161714,$1A1A1417,$2022201E,$29291A1E,$29292C2C,$3A3A3A3B,$4040403B,$40404040,$01404040
  Data.l $0F0D0D0F,$0F120F10,$0E14120F,$16140E11,$11131311,$16162016,$20161618,$1A1A1E29,$291E1A1A,$22222725,$2D252722,$2D29292D
  Data.l $3639392D,$40403939,$40404040,$40404040,$1100C2FF,$00930008,$2201036E,$01110200,$FF011103,$00A700C4,$01050100,$00000001
  Data.l $00000000,$00000000,$03020004,$07010605,$01030001,$00000001,$00000000,$00000000,$03020100,$00100400,$01020202,$02020403
  Data.l $00000103,$01000000,$00040302,$12101105,$31212013,$41142206,$15242333,$02001134,$03020301,$03060406,$00000001,$02010000
  Data.l $03210011,$51411231,$71611004,$81133222,$2042A191,$E1D1C130,$14B1F023,$02001252,$05010202,$00000101,$00000000,$11010000
  Data.l $21102000,$41313051,$A1718161,$0C00DAFF,$02000103,$00110311,$6EF30000,$B327BBF3,$5B790D4C,$8BC4A957,$01C7AEBE,$5841D50D
  Data.l $4B124CD2,$962DDE65,$07AB09EF,$78342473,$6538A068,$45478E6C,$3A176199,$644BE288,$D4487743,$C6BE1B7A,$D366D8A4,$FDF3C90B
  Data.l $DB80939B,$793E5ED6,$AF03FD1D,$653B4412,$6315F48D,$3C299209,$7EDE48E2,$B7BBCC8E,$A4062D6B,$AC3BB1EA,$499EA5DD,$8FF46F56
  Data.l $4E30F539,$6EAAEA06,$39D3550D,$BB6D75EE,$57E57048,$695162D2,$1B1CEF6A,$7D991809,$40FDCB3F,$C6F38A6B,$4544345C,$B444123A
  Data.l $A1888CE1,$C96B286B,$EB3A1869,$F4A623EA,$2DF4385F,$B115E2AD,$69AFEEA9,$078A9D16,$05B2D499,$C8A8B01B,$A6238F22,$5D2B5ECC
  Data.l $AE03D291,$D9F3078E,$6B5574B2,$E9A6EBB1,$0A8F15E7,$611EB417,$EBCFA1C6,$3493B6B2,$759973F9,$6D74A32F,$7DB19669,$116057E3
  Data.l $69B4B26C,$5C81D441,$97752D24,$EA9A15E4,$20B5924E,$EA88D459,$22F11648,$49B6C43B,$DAFFBF2D,$02010800,$00050100,$0ECE78C2
  Data.l $1CF4E076,$6E005B0A,$F6BB3AEE,$6C25218F,$F2330B14,$7AC0EE25,$818CF332,$8CE27B43,$43474E5C,$12548E92,$078283B8,$87833F3D
  Data.l $B773301A,$040C008C,$4672181C,$734E1623,$727E24DB,$E11B8323,$6E556C89,$F320A371,$83DF8ADB,$8843408E,$1EDF1838,$0327702E
  Data.l $00DAFFD7,$00030108,$C0000501,$7746CE39,$2C0CF461,$036F0F17,$27AFA2E3,$0C6000B0,$8FC74B4C,$A7E808B7,$572C568C,$1B1B1BDB
  Data.l $6764D083,$736CC083,$E8C063C8,$84912B3A,$04E124E1,$A891C161,$7BC6C938,$8E9269E4,$B7A3F28B,$64310E0B,$195B70E4,$E53E347F
  Data.l $E2E43186,$0538F9FC,$FFBF3EB9,$010800DA,$05010001,$2287C100,$5FAD24AF,$7F643B43,$D244EE5E,$4E7A5208,$127C2CAB,$F2195F3D
  Data.l $EFAFBF7E,$2C88D210,$D661D074,$998E8D2B,$31D1D988,$F4C18B34,$7E3E380C,$8EEB3BA2,$975301C5,$FB36639D,$ABAB6D0A,$8F8190A5
  Data.l $6DB6E9AF,$D6FE472B,$3BE7F641,$63927A3B,$1ACDEAD8,$985DB62F,$E1D2ECB4,$5AAD572A,$4FBD2C36,$6B98DDA5,$29FAB97E,$56B3F1A7
  Data.l $CB6A69D1,$25AD7C77,$4B6BAD6D,$C87AEB7B,$E3FADEAC,$A1815833,$5A55B57E,$23482D5D,$6D819348,$66AFC49B,$D5C63E03,$2A7885A5
  Data.l $227BC608,$4DE22A2B,$E00726F5,$5F7B889E,$11E63C47,$55B5CE2C,$C78E67BC,$F23C648C,$18AFE439,$63633FEC,$618F2455,$A297D750
  Data.l $D0EB5F0E,$1DACAA08,$36A634ED,$2209FE13,$38DF8330,$5D16B200,$3C1C098C,$83BFC5A3,$F607E984,$684D15E9,$832D97D9,$950D64E4
  Data.l $EBBF9635,$FB234E57,$FA75C90D,$C3F7F1FA,$9EE361B8,$E1ED9112,$ABA01473,$D2EF6FE5,$559CDE08,$02B744A0,$6522A9B5,$ABE5A348
  Data.l $957229A8,$98D3287B,$9324B5E2,$76DE0B1B,$D14BA131,$7F954FF6,$859D69F4,$1B894C69,$206FE5C9,$5A91E239,$31CFBDBC,$FC92248E
  Data.l $1341914B,$6CC6892C,$E20E0FEA,$61659322,$8932FACC,$ACF24752,$27433BB5,$A4C6C272,$D5587BEF,$2800FFE5,$D611AC82,$FD445496
  Data.l $6576CFE2,$1FC8FB6A,$7E20CA38,$5A7127CD,$B919C90B,$720C7972,$39898A80,$6248605A,$AC2C108E,$DCB1DE70,$6DA43C49,$90857D26
  Data.l $55E5CF41,$95AF4FC2,$760DAD24,$CABC326B,$DA5452E2,$BC4B2C96,$48B33445,$91DDCAB3,$88C8238F,$5FE32186,$16AF4EB3,$ED94FA0C
  Data.l $92505E2C,$6281C12C,$AE2BC059,$BB496658,$248D6BE3,$44A12472,$591EC870,$C6FE79E4,$D4A7578E,$77324641,$8313653D,$366C8659
  Data.l $760DAB35,$7D2208DE,$9BCB55D5,$D3D144BD,$F64A93BE,$619A7466,$F004F8C5,$71988FF8,$189EA9DD,$077C452A,$3C63749A,$E700FF96
  Data.l $E9EC4BDC,$9BDEDA5E,$785B1457,$E62DB4B4,$F90DC5A4,$B06451BB,$21509609,$94B91FEF,$EC1270AD,$8A641F43,$4A526F1B,$CE82FDBA
  Data.l $B678EFD4,$18236F50,$1CCF7176,$E99E75DB,$B759A9DF,$67D7E464,$C579F298,$F8C6F7F9,$E77B46FE,$4F9F1FBE,$0800DAFF,$06020201
  Data.l $78C7003F,$51B9AEE2,$BF11EE2A,$0FE43F86,$A1111DC5,$C50414F6,$54DD1057,$70440847,$4DFCB2E6,$9C1A7D42,$7FE8C811,$0800DAFF
  Data.l $06020301,$6BC7003F,$B01B87EF,$8522FA3A,$14A3A279,$02E18207,$18A33BCB,$2AEF3C66,$83DB0F6E,$DAFFA1EF,$01010800,$003F0601
  Data.l $CD4401ED,$A86DEA1D,$864663A2,$C8D1B4EE,$F824CAC2,$B7D6079D,$F2D38915,$5E072497,$68C5C72B,$782C1C6E,$224C23C7,$14EB7878
  Data.l $3B555900,$4D00FFA3,$88250AFB,$6D949627,$0C8020F9,$B03C3473,$9ED04C79,$20D90A3A,$02D14434,$69EECFFC,$D488F98A,$E407A228
  Data.l $46BD8B10,$E331BDA1,$8F2A0F40,$5C409E33,$83C1A5C1,$27BD5CA2,$8CFBECB9,$5F8EF94E,$24B0190A,$3764412B,$41BDAC89,$AEB1952D
  Data.l $DAD245E6,$1F2EABC5,$45E6B069,$409DA02E,$49DC51F9,$40B0278E,$3FF21A86,$2C242E80,$E1052A4F,$5E0B6A7C,$A8850D26,$040A08A4
  Data.l $F5681D77,$C5118169,$E7C3C3FD,$7549D75E,$859F9FFB,$1C61797B,$ACA183D8,$713C7EBD,$DC902293,$53E4D38C,$F4020EB4,$0AFCF054
  Data.l $0D45421B,$FF4A4580,$0AA81400,$5B8931B3,$73AF17C0,$1AAC111B,$6665D429,$3E2C008B,$2CD28642,$B0180D2E,$941CC6A6,$02748A3A
  Data.l $F7208843,$6857C851,$DA830AD0,$2C06A108,$4183C420,$38D86472,$EC4E6B2C,$3CD54E2E,$61B1ADC0,$C62AA252,$1C37A8B4,$83F4EF68
  Data.l $CA6C4573,$5A443474,$7D07DA6D,$C4400E23,$FABAE0D6,$AFEE909B,$0413346D,$4DC452EB,$BC480431,$162BD178,$D449CD04,$4AAB4FD4
  Data.l $BA6D2E62,$8C555281,$9D0A4F79,$457CB55B,$2D009B21,$1EF254FC,$C6A25B91,$AB95C7AF,$87955727,$20ECC4B0,$45DA74DE,$68A21C30
  Data.l $E33EC5E4,$893C45B0,$7258E9BF,$526CF338,$243431DE,$F8C05C12,$16A9DB50,$931B8D3C,$8D137B46,$DAB122C5,$F45F5820,$52A301A9
  Data.l $98C6A74E,$A2374202,$A83B266E,$6E6BA583,$D7FDB055,$86328314,$11D4DBD8,$15A84530,$BAA3E85B,$79BE82B1,$F306BE9D,$4BC3BCCA
  Data.l $CC96E9FC,$08D3A04D,$8827F68B,$B18C6BAC,$B7C0A0B6,$D898A5C2,$DC018B49,$2226A849,$C5511AF6,$7D164697,$330E342F,$91864EBD
  Data.l $7E63CB1B,$DDD232FA,$3F3C86E6,$1A7098D9,$D94CE303,$59866C09,$51E1878E,$1309833B,$64281DAC,$18121920,$B127AA7F,$53637D07
  Data.l $CF0B5064,$DC43E118,$9C2A71B1,$7274CE7F,$AA1C7E11,$9368DD48,$37995BDF,$EEA53EE3,$018028E6,$79802C60,$248188A6,$7F2133C9
  Data.l $46815C9A,$FA1D13E1,$2E31E552,$1A49272E,$B429BC51,$1C47A37F,$778E20F0,$6D2BA9B1,$3C893D41,$31A822C5,$15E7B100,$E4F364EE
  Data.l $6EE30022,$11985814,$52BF830A,$00150D68,$549E79DC,$93B419C4,$102A60E1,$9C67809B,$AFEB9BD4,$DDB7293D,$3C3E0248,$CF91012A
  Data.l $118A8085,$98416D72,$A278816E,$0F3C950A,$3A469A0A,$D6CA4A03,$1BAC3481,$517826D3,$12032495,$26100728,$EEABBF62,$AC40FA37
  Data.l $20857C71,$C6A6898F,$F90824D6,$07D610CD,$7547E151,$5EB8DD42,$20070099,$FC45D05D,$D80A1435,$76FA6F9D,$27606C9C,$B5AFD53B
  Data.l $2F1A0F66,$21D73AA1,$DFF142DF,$D8254359,$3862DE2E,$98BB08D1,$88A63BFA,$50C40D61,$97CA5327,$1302402E,$30B2CE33,$A810B453
  Data.l $D0F7B274,$5FFB7B6D,$83067A2B,$8E78A299,$56B07634,$7AE1A9BC,$23C7600C,$90ADAD37,$3573C013,$6E9264B8,$935EAC6F,$572AF126
  Data.l $FDA9C58F,$7C410ED2,$9889356C,$518722AF,$F4311524,$8A8D1434,$DAD6D034,$15F5DD61,$AB98F1ED,$B9E64BE9,$FC9457D4,$E79538E8
  Data.l $9D6C5A07,$9C32522E,$745618A3,$6D52410A,$BEE745EE,$1A502F93,$24541673,$AC6D95DC,$7AE98523,$53A6840C,$CCB27191,$133526C1
  Data.l $6CBED24B,$363ED18D,$821499CC,$8D1955C5,$D65426E2,$E723BD1C,$9F7BF218,$C8689BD3,$907717DB,$569C5F8B,$60D53BCC,$D497C76E
  Data.l $0049C58D,$B9548C4F,$AF35B0B6,$A2700028,$DB58E0CE,$6E9B0795,$C6D8EC99,$62124AC3,$FF35D52B,$72503F00,$C35CEF0F,$55D650DB
  Data.l $13CB2E22,$5DF5D535,$2EDD3066,$C6AA871C,$2B97790B,$3D2F2A1F,$FEFE6BDC,$5F7017A0,$412E0E24,$DC1637DB,$83C9016B,$DD9F6EDA
  Data.l $6B09DBF6,$3CC2A80C,$CEAC4FEE,$AB9ED3B5,$FAEA7526,$0975E072,$324CDB0C,$9004E64E,$9D948E67,$C664C94A,$8023DBB8,$7275E5AC
  Data.l $EA7C20AB,$8A1DCD0D,$98799D27,$CF9E2AC7,$A5EFBEDA,$DE1EDF7D,$F8E34A3F,$D9FF00FF
  
  Image_Image_6:
  Data.l $E0FFD8FF,$464A1000,$01004649,$64000002,$00006400,$1100ECFF,$6B637544,$00010079,$00000004,$FF000024,$412100EE,$65626F64
  Data.l $00C06400,$03010000,$02031000,$00000603,$0000F801,$0000C602,$DBFF8605,$0E008400,$0A090909,$0A0A0E09,$0B0D140E,$1117140D
  Data.l $17110E0E,$1716161B,$1A1B1616,$16161714,$1A1A1417,$2022201E,$29291A1E,$29292C2C,$3A3A3A3B,$4040403B,$40404040,$01404040
  Data.l $0F0D0D0F,$0F120F10,$0E14120F,$16140E11,$11131311,$16162016,$20161618,$1A1A1E29,$291E1A1A,$22222725,$2D252722,$2D29292D
  Data.l $3639392D,$40403939,$40404040,$40404040,$1100C2FF,$00230008,$22010377,$01110200,$FF011103,$009300C4,$01030001,$00000101
  Data.l $00000000,$00000000,$07060500,$01040203,$00010101,$00000000,$00000000,$00000000,$10020100,$05010200,$03000300,$00000000
  Data.l $00000000,$00040605,$07031101,$40023010,$00111241,$03010202,$04060302,$00000007,$01000000,$11040302,$21051200,$61413113
  Data.l $42228151,$91100614,$30206252,$3323A140,$02001215,$00000103,$00000000,$00000000,$40000000,$31110120,$0C00DAFF,$02000103
  Data.l $00110311,$93CD0000,$9ACA78D7,$5A8D3C15,$D6758863,$245ACC64,$584B5339,$E15F434A,$D2D43A19,$ADCC4E13,$A5C23111,$4AE834EA
  Data.l $F8503367,$B564B12A,$D0E8D330,$5C6C6B73,$63FC663A,$00A025DA,$00000000,$00DAFF07,$00020108,$CD000501,$CD9AF55A,$D55FB366
  Data.l $C56AAF7E,$F88B15EB,$AFDE5ABD,$0800DAFF,$01000301,$8FFC0005,$0800DAFF,$01000101,$62C50005,$62C5E9B1,$641CE1B1,$2C2C8C32
  Data.l $C2E6B049,$80C0D65F,$19A07471,$C9E8BC0B,$CB9465D8,$93B72D8A,$7B09D71F,$0528187C,$4A658E22,$631997E6,$DAC674C5,$8C86D4D1
  Data.l $78E0371B,$97A7237D,$CAB0A51F,$A00F08F4,$256BCAFE,$D413EE03,$0D961731,$D8DBB601,$816DF450,$E32E4D75,$609FB4CA,$5435B980
  Data.l $A6A57FD4,$03738D9E,$DBF64373,$26A0FE44,$3B0C3971,$5E9A026F,$96952EA0,$106336C9,$91C15233,$6D0ED793,$76BAA18F,$858EE095
  Data.l $755E0E83,$6D4CBF34,$1F900F53,$8944CFD4,$606CC215,$A3F4411E,$6C492122,$11F33029,$FC040CE9,$DAFFDD5F,$02010800,$003F0602
  Data.l $1F351C8D,$0800DAFF,$06020301,$FF63003F,$010800DA,$3F060101,$7A7DFE00,$E37A40F7,$069FD12E,$EF5300EA,$F2C2B33A,$2516469C
  Data.l $90482401,$DBC8C86E,$AE07AC8D,$AC2A5EA2,$B023F47F,$5CB5F346,$7339C780,$206958FB,$B411A2E4,$4819B98B,$8DD02365,$ADD2A10B
  Data.l $5300FF77,$D45F924B,$3E6AF92A,$B6FB5826,$98D3C727,$9C80ACFA,$B0D1B902,$0BE78526,$DB52D6B8,$6343FAB3,$9B9CD419,$B758D0F1
  Data.l $E2C6BBC7,$B7595254,$49DBAC8E,$7D531BE8,$D031F4C3,$0C8E55BD,$A9BA6A23,$8F0CF900,$480E528B,$3630DB43,$BBDDFECE,$A7AFBFB2
  Data.l $5741AC86,$CAF6AE69,$761B13C4,$8EDBC097,$6818D598,$A2E54A56,$8D41212D,$7F463BD8,$61B57D2D,$D7DDC2A9,$2FCA2786,$BA8566C4
  Data.l $17BF4EB7,$B54FBA5E,$EA590DCF,$455A51CC,$00FF6E8C,$0276E722,$F85567F9,$67D45D84,$93315BB3,$EE3A93E0,$EAF9F84C,$E551E227
  Data.l $486499B8,$194062C1,$A5A6073D,$9271CDA9,$7059BF55,$04572867,$0039CAF4,$5CA7FCF8,$CB2EADB8,$1A4DEC34,$553DB84C,$C6353291
  Data.l $964C45F3,$2AA72120,$91638E3C,$8D723FB0,$F2FB9D55,$FB15AC56,$216FCB74,$6C37544E,$27088083,$A8EEA8AE,$30412DF0,$39202649
  Data.l $765205EE,$3A4161F9,$EE95E492,$1761B15A,$3618371B,$ED24258F,$C75CCB5F,$D76C3D35,$D5B0A736,$108211BA,$3486F8EC,$A73EAE78
  Data.l $097CD5D1,$41254172,$000A55C8,$31AFF003,$63548EF0,$C67560EE,$5813A1DE,$8EEC548A,$63862DD8,$6E8F73B9,$0EB7F675,$8A2D3348
  Data.l $473DC0E5,$727F2A68,$061A6B74,$61A57D7B,$1BBD2A38,$6CC149C1,$D5F93969,$4773C45A,$8EF2C732,$F64406D3,$A3C6E1E3,$32056AE4
  Data.l $E3DA08C6,$20188620,$B486A2E9,$02C34810,$F588B951,$67358E01,$45A3ED81,$CC23436A,$552CBF73,$5D3E9E8F,$B2C1C64F,$00ABD35A
  Data.l $177602B2,$35264B1B,$2DCBAADB,$A30CE373,$0423EE2B,$48422E6A,$A0B0B4D2,$78E4EC44,$EBC9D912,$6615BA9E,$57411B8A,$8380BC6A
  Data.l $B003608C,$826F7580,$DC306348,$A8977776,$0319BF71,$E05F3EAE,$DA71CC14,$4A1BE944,$9D3D2A5B,$6DE7A10E,$EE7A9215,$224714AF
  Data.l $10720A35,$E4A6E501,$3BB1466C,$CE44A02A,$CF6314D0,$D9FF1FFA
EndDataSection
  ;}
;}
;{ Image Plugins
UseJPEGImageDecoder()
;}
;}
Procedure OpenWindow_Win()
  If OpenWindow(#WIN, 646, 610, 275, 149, "Sheep'Up 0.3", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    StickyWindow(#WIN,1)
    
    EditorGadget(#AFF, 120, 40, 150, 60, #PB_Editor_ReadOnly)
    RetourAuto(#AFF)
    SetGadgetText(#AFF," Bienvenue !")
    ButtonGadget(#BT_X, 120, 130, 150, 20, "Quitter", #BS_FLAT)
    ProgressBarGadget(#PBar1, 120, 107, 150, 10, 0, 100, #PB_ProgressBar_Smooth)
    ProgressBarGadget(#PBar2, 120, 117, 150, 10, 0, 100, #PB_ProgressBar_Smooth)
    ImageGadget(#ImageSheep1, 0, 1, 110, 147, CatchImage(#Image_Image_5, ?Image_Image_5))
    ImageGadget(#ImageSheep2, 130, 0, 119, 35, CatchImage(#Image_Image_6, ?Image_Image_6))
    ; Gadget Fonts
    SetGadgetFont(#AFF, LoadFont(#Font_AFF, "arial", 9, 16))
   ; RetourAuto(#AFF) ;- Necessite ArS-libs
    SetGadgetFont(#BT_X, LoadFont(#Font_AFF, "arial", 9, 16))
    ; Window Backcolor
    PureCOLOR_SetWindowColor(#WIN, $0)
    
    EnableWindowDrop(#WIN, #PB_Drop_Files, #PB_Drag_Copy) 
  EndIf
EndProcedure

OpenWindow_Win()

;{- Event loop
Repeat
  Select WaitWindowEvent(100)
    Case 0
			If uploading
        ftp_progress = FTPProgress(1)
        Select ftp_progress
          Case #PB_FTP_Started
            SetGadgetState(#PBar2, 0)
            SetGadgetText(#AFF,"Up du fichier "+NomFichier$)
            
          Case #PB_FTP_Finished
            If NextElement(files_to_upload())
              MonFichier$=files_to_upload()
              NomFichier$ = GetFilePart(MonFichier$)
              filesize = FileSize(MonFichier$)
              SetGadgetState(#PBar1, ListIndex(files_to_upload()) * 100 / CountList(files_to_upload()))
              SetGadgetState(#PBar2, 100)     
              SendFTPFile(1, MonFichier$, NomFichier$, #True)
              
              
            Else
              SetGadgetState(#PBar1, 100)
              SetGadgetState(#PBar2, 100)
              uploading = 0
              ClearList(files_to_upload())
              CloseFTP(1)
              SetGadgetText(#AFF,"Upload terminé !"+Chr(10)+Str(NbrFichier)+" fichier(s) traité(s)")
            EndIf
            
          Case #PB_FTP_Error
            ; Stop all remaining transfers
            uploading = 0
            ClearList(files_to_upload())
            CloseFTP(1)
            
          Default
            ; Still transferring, display progress
            If filesize<>0
              SetGadgetState(#PBar2, ftp_progress * 100 / filesize)
            EndIf
        EndSelect
      EndIf
      
			; ///////////////////
    Case #PB_Event_Gadget
			Select EventGadget()
        Case #AFF
        Case #BT_X
					End
      EndSelect
			
			
    Case #PB_Event_WindowDrop
			If OpenFTP(1, "HOTE", "USER", "MOT DE PASSE")
        nbrERR = 0
				FichierDrop$ = EventDropFiles()
				NbrFichier  = CountString(FichierDrop$, Chr(10)) + 1
				For i = 1 To NbrFichier
					AddElement(files_to_upload())
					files_to_upload() = StringField(FichierDrop$, i, Chr(10))
        Next i
				
				If FirstElement(files_to_upload())
					MonFichier$ = files_to_upload()
					filesize = FileSize(MonFichier$)
					NomFichier$ = GetFilePart(MonFichier$)
					error = SendFTPFile(1, MonFichier$, NomFichier$, #True)
					If error = 0
            nbrERR+1
          EndIf
          Debug "nbr d'erreurs : "+Str(nbrERR)
					uploading = 1
        EndIf
      EndIf
			
    Case #PB_Event_CloseWindow
			Select EventWindow()
        Case #WIN
					CloseWindow(#WIN)
					End
      EndSelect
      
      
  EndSelect
ForEver


Merci pour ton aide, et Flaith pourquoi cette suppression ?
On se détend !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: FTP le retour de la vengeance...(suite)

Message par graph100 »

Code : Tout sélectionner

RetourAuto(#FTP)
N'est pas une fonction (blablabla) ...
tu dois avoir des lib perso ;)
mais j'ai vu le screen de l'autre post, il est super le mouton xD
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre