FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FTP si Funciona con Vista y no con XP
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
FTP si Funciona con Vista y no con XP
Posted: Wed Oct 01, 2008 08:24 AM

Antonio,

He creado un pequeño ejemplo a partir de testftp, utilizo esta función, desde XP, dice que está subiendo los archivos, luego desde FileZila FTP, accedo y no se ven los archivos. Si ejecuto el programa desde windows vista, si se ven los archivos.

//----------------------------------------------------------------------------//

static function SendFiles( aSource, aTarget, nBufSize, oSay1, oSay2,;
oMeter1, oSay3, oMeter2, lEnd, oDlg, oFTP )
local n
local hSource
local cBuffer := Space( nBufSize )
local nBytes, nFile := 0, nTotal := 0
local nTotSize := 0
local oFile

for n = 1 to Len( aSource )

  CursorWait()

  aSource[n]:=STRTRAN(aSource[n] , "\\" , "\" )

  if ! File( aSource[ n ] )
     MsgStop( "Fichero not existe: " + aSource[ n ] )
     LOOP

// oDlg:End()
// exit
endif
hSource = FOpen( aSource[ n ] )
nTotSize += FSeek( hSource, 0, 2 )
FClose( hSource )
SysRefresh()
next

oMeter2:nTotal = nTotSize

for n = 1 to Len( aSource )
hSource = FOpen( aSource[ n ] )

  oFile = TFtpFile():New( aTarget[ n ], oFTP )
  oFile:OpenWrite()

  oSay1:SetText( "Origen : " + aSource[ n ] )
  oSay2:SetText( "Destino: " + aTarget[ n ] )
  oMeter1:Set( 0 )
  oMeter1:nTotal = FSeek( hSource, 0, 2 )
  FSeek( hSource, 0, 0 )
  nFile := 0
  SysRefresh()
  while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0 .and. ! lEnd
     oFile:Write( SubStr( cBuffer, 1, nBytes ) )
     oSay3:SetText( "Bytes copiados: " + ;
                    AllTrim( Str( nTotal += nBytes ) ) )
     oMeter1:Set( nFile += nBytes )
     oMeter2:Set( nTotal )
     SysRefresh()
  end
  FClose( hSource )
  oFile:End()
  if lEnd
    exit
  endif

next

return nil

Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: FTP si Funciona con Vista y no con XP
Posted: Wed Oct 01, 2008 04:29 PM
Antonio,

Disculpe la insistencia, tengo presion por parte de clientes, deseo saber si vas a revisar esto en alguna fecha o algunos tips? para seguir investigando.


jnavas wrote:Antonio,

He creado un pequeño ejemplo a partir de testftp, utilizo esta función, desde XP, dice que está subiendo los archivos, luego desde FileZila FTP, accedo y no se ven los archivos. Si ejecuto el programa desde windows vista, si se ven los archivos.


//----------------------------------------------------------------------------//

static function SendFiles( aSource, aTarget, nBufSize, oSay1, oSay2,;
oMeter1, oSay3, oMeter2, lEnd, oDlg, oFTP )
local n
local hSource
local cBuffer := Space( nBufSize )
local nBytes, nFile := 0, nTotal := 0
local nTotSize := 0
local oFile


for n = 1 to Len( aSource )

CursorWait()

aSource[n]:=STRTRAN(aSource[n] , "" , "" )

if ! File( aSource[ n ] )
MsgStop( "Fichero not existe: " + aSource[ n ] )
LOOP
// oDlg:End()
// exit
endif
hSource = FOpen( aSource[ n ] )
nTotSize += FSeek( hSource, 0, 2 )
FClose( hSource )
SysRefresh()
next

oMeter2:nTotal = nTotSize

for n = 1 to Len( aSource )
hSource = FOpen( aSource[ n ] )

oFile = TFtpFile():New( aTarget[ n ], oFTP )
oFile:OpenWrite()

oSay1:SetText( "Origen : " + aSource[ n ] )
oSay2:SetText( "Destino: " + aTarget[ n ] )
oMeter1:Set( 0 )
oMeter1:nTotal = FSeek( hSource, 0, 2 )
FSeek( hSource, 0, 0 )
nFile := 0
SysRefresh()
while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0 .and. ! lEnd
oFile:Write( SubStr( cBuffer, 1, nBytes ) )
oSay3:SetText( "Bytes copiados: " + ;
AllTrim( Str( nTotal += nBytes ) ) )
oMeter1:Set( nFile += nBytes )
oMeter2:Set( nTotal )
SysRefresh()
end
FClose( hSource )
oFile:End()
if lEnd
exit
endif
next

return nil
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: FTP si Funciona con Vista y no con XP
Posted: Thu Oct 02, 2008 03:21 AM
Antonio,
Fe de errata, no es testftp,
es icopyfill

Ya descubrí, lo que sucede.
Mi pc de desarrollo tiene linux ubuntu como arranque y dentro de el, tengo maquinas virtuales con Windows.

Lo probé desde otro PC con XP y funciona Ok.
Hay que anotarlo en los libros de la experiencia.

jnavas wrote:Antonio,

Disculpe la insistencia, tengo presion por parte de clientes, deseo saber si vas a revisar esto en alguna fecha o algunos tips? para seguir investigando.


jnavas wrote:Antonio,

He creado un pequeño ejemplo a partir de testftp, utilizo esta función, desde XP, dice que está subiendo los archivos, luego desde FileZila FTP, accedo y no se ven los archivos. Si ejecuto el programa desde windows vista, si se ven los archivos.


//----------------------------------------------------------------------------//

static function SendFiles( aSource, aTarget, nBufSize, oSay1, oSay2,;
oMeter1, oSay3, oMeter2, lEnd, oDlg, oFTP )
local n
local hSource
local cBuffer := Space( nBufSize )
local nBytes, nFile := 0, nTotal := 0
local nTotSize := 0
local oFile


for n = 1 to Len( aSource )

CursorWait()

aSource[n]:=STRTRAN(aSource[n] , "" , "" )

if ! File( aSource[ n ] )
MsgStop( "Fichero not existe: " + aSource[ n ] )
LOOP
// oDlg:End()
// exit
endif
hSource = FOpen( aSource[ n ] )
nTotSize += FSeek( hSource, 0, 2 )
FClose( hSource )
SysRefresh()
next

oMeter2:nTotal = nTotSize

for n = 1 to Len( aSource )
hSource = FOpen( aSource[ n ] )

oFile = TFtpFile():New( aTarget[ n ], oFTP )
oFile:OpenWrite()

oSay1:SetText( "Origen : " + aSource[ n ] )
oSay2:SetText( "Destino: " + aTarget[ n ] )
oMeter1:Set( 0 )
oMeter1:nTotal = FSeek( hSource, 0, 2 )
FSeek( hSource, 0, 0 )
nFile := 0
SysRefresh()
while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0 .and. ! lEnd
oFile:Write( SubStr( cBuffer, 1, nBytes ) )
oSay3:SetText( "Bytes copiados: " + ;
AllTrim( Str( nTotal += nBytes ) ) )
oMeter1:Set( nFile += nBytes )
oMeter2:Set( nTotal )
SysRefresh()
end
FClose( hSource )
oFile:End()
if lEnd
exit
endif
next

return nil

Continue the discussion