Spanish ftp

Gustavo

Member
Licensed User
Longtime User
bueno tengo que subir varios archivos desde el servidor ftp. el problema radica en que cuando el servidor esta apagado lo mismo me da que se realizo bien la importacion.

Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim FTP As FTP
Dim Tim As Timer

End Sub

Sub recibe_Click
hay = "0"
directorio = File.DirRootExternal&"/sitef/"
FTP.Initialize("FTP", "ftpburmanspm.no-ip.org", 21, "gustavo", "mohamed")
'FTP.Initialize("FTP", "10.0.0.16", 21, "gustavo", "mohamed")

FTP.DownloadFile("/envio/"&arch_cliente,True,directorio,arch_cliente)
FTP.DownloadFile("/envio/"&arch_arti,True,directorio,arch_arti)
FTP.DownloadFile("/envio/"&arch_vende,True,directorio,arch_vende)
FTP.DownloadFile("/envio/"&arch_porfolio,True,directorio,arch_porfolio)
FTP.DownloadFile("/envio/"&arch_combos,True,directorio,arch_combos)
If hay = "0" Then
Msgbox("Actualizaciones Recibidas","Alto")
Else
Msgbox("No se Recibio Actualizaciones, Error De Conección","Alto")
End If
FTP.Close
End Sub

Sub FTP_DownloadCompleted(ServerPath As String, Success As Boolean)
If Success = False Then
hay = "1"
End If

End Sub
 

JorgeMC

Member
Licensed User
Longtime User
Tendría que mirarlo bien, pero podrías realizar una comprobación antes de que si existe tal archivo en el servidor, es un poco "chapuza" pero no entiendo como no te da error.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Gustavo

Antes de nada, cuando pongas código utiliza lo de abajo (sin espacios) para que se entienda mejor
[ CODE] ' aqui pones el codigo [ /CODE] (tienes un botón a la derecha del editor que lo pone)

Supongo que cuando dices
tengo que subir varios archivos desde el servidor ftp

Querias decir, quiero bajar, ya que estas empleando el DownloadFile.
Creo que el error está en esa variable que se llama "hay" (string) que empleas para saber si se ha completado la descarga, al principio del programa la pones a "0", mandas la descarga y luego la compruebas si está a "0" es que descargó, ya que en el DownloadFile cuando el Success = False la pones a "1".
Si no descarga, llegas a la comprobacion y sigue a "0", por lo tanto te da un valor falso de lo que está pasando.

Yo haria dos cosas, primero no emplearia una pregunta negativa, por que si no el propio codigo lo lias, si llamas a la variable "hay" y cuando "hay" fichero vale "0" y cuando no "hay" fichero vale "1" , eso te liará hasta a ti, cualquiera si pensamos en que no hay "algo" dirá que es igual a 0, y si hay algo , pues valdrá mas de 0.
Luego, es mas facil si empleas un Boolean que un string para saber valores verdaderos o falsos.

Yo haria algo asi:
B4X:
Sub recibe_Click
' al principio del codigo donde pones hay="0"
hay = "0"  ' lo quitaria y pondria la linea de abajo
FicheroBajado= false

'en la comprobación 
If hay = "0" Then
  Msgbox("Actualizaciones Recibidas","Alto")
Else
  Msgbox("No se Recibio Actualizaciones, Error De Conección","Alto")
End If
' quitaria eso y pondria:
If FicheroBajado Then
  Msgbox("Actualizaciones Recibidas","Alto")
Else
  Msgbox("No se Recibio Actualizaciones, Error De Conección","Alto")
End If

'Luego, en el:

Sub FTP_DownloadCompleted(ServerPath As String, Success As Boolean)
  If Success = False Then
    hay = "1"
  End If
end sub

' lo cambiaria por
Sub FTP_DownloadCompleted(ServerPath As String, Success As Boolean)
  FicheroBajado = Success 
end sub

Pero para mas seguridad, emplearia el evento:

B4X:
Sub FTP_DownloadProgress (ServerPath As String, TotalDownloaded As Long, Total As Long)

Y asi sabria si de verdad ha bajado el fichero

Saludos
 

Gustavo

Member
Licensed User
Longtime User
muy bueno jesus, yo vengo de otro lenguaje de programacion y a veces la logica del basic4 me pierde, gracias por tu colaboracion me sirve mucho. mucha gracias amigo
 
Top