Página 1 de 1

FTP, Cannot Load WinINet.DLL ?????

Enviado: 03 Jan 2007 12:32
por Ale SB
Blz galera,

Eu estou tentando compilar um exemplo de Ftp e aconteceu o seguinte :

CANNOT LOAD WinINet.dll !

Testei em 5 Micros:

3 com XP e conecçao ADSL, deu erro da DLL

1 com Win98 conecçao Via radio, deu certo

Este testei agora:
1 com XP conecçao Via radio, deu certo

O Ex. q eu estou testando eh este.

FTPDIR.PRG

Código: Selecionar todos

// Testing the FiveWin new Internet Classes

#include "FiveWin.ch"

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

function Main()

   local oInternet := TInternet():New()
   local oFTP      := TFTP():New( "ftp.host.com.br", oInternet,"UserName","PassWord" ) // Microsoft FTP   
   local aFiles

   if ! Empty( oFTP:hFTP )
      aFiles = oFTP:Directory( "*.*" )
      //      AEval( aFiles, { | aFile | MsgInfo( aFile[ 1 ] ) } )
      msginfo("conectou")
   else
      MsgAlert( "oFTP:hFTP is null" )
   endif

   oInternet:End()

   MsgInfo( "Done!" )

return nil

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

@braços Ale

Enviado: 06 Jan 2007 14:38
por rochinha
Ale

A WinINet.dll é uma DLL apropriada somente para Win98 ou menor.

Veja alguns trechos de meu aplicativo de trabalho on-line:

Código: Selecionar todos

          REDEFINE BTNBMP ID 100 OF oDlg PROMPT "NET Update"    RESOURCE "bmpbtn91" ACTION ( FTPGetFiles( cServer,;
                          { "/fivolution/downloads/estoque.dbf","/fivolution/downloads/estoque.fpt" },;
                          { cPath+"estoque.dbf",cPath+"estoque.fpt" } ), oLbx2:Refresh(), oLbx2:UpStable() ) LEFT
No codigo acima o meu btão Update traz o estoque da central para a maquina do vendedor externo.

Outro trecho:

Código: Selecionar todos

/*
 **** **** **** **** **** **** **** **** **** **** **** **** ****
 * FUNCAO: Modulo de download do arquivo de estoque
 **** **** **** **** **** **** **** **** **** **** **** **** ****
 */
function FTPGetFiles( cFTPSite, aSource, aTarget )
   local oDlg, oSay1, oSay2, oSay3, oBtnCancel
   local oMeter1, oMeter2
   local nAmount1, nAmount2
   local lEnd := .f.
   local nBufSize := 2000
   local oInternet, oFTP
   cFTPSite  := "127.0.0.1"
   cUser     := ""
   cPassword := ""
   ESTOQUE->(dbCloseArea())
   if fErase( cPath+"ESTOQUE.DBF" ) > 0
      MsgStop( "Aquivo esta em uso. Impossivel continuar", "Atencao" )
      return .t.
   endif
   MsgRun( "Conectando ao FTP em "+cFTPSite+"...", "Aguarde",;
           { || oInternet := TInternet():New(),;
                oFTP := TFTP():New( cFTPSite, oInternet, cUser, cPassword ) } )
   if Empty( oFTP:hFTP )
      MsgStop( "Impossivel conectar ao site FTP!" )
      return nil
   endif
   DEFINE DIALOG oDlg RESOURCE "ICopyFiles" TITLE "Baixando arquivos de " + cFTPSite
          //REDEFINE BITMAP oBitMap ID  99 OF oDlg RESOURCE "logoBMP" //TRANSPAREN
          //REDEFINE BITMAP oBitMap ID 100 OF oDlg RESOURCE "desktop" TRANSPAREN
          REDEFINE SAY oSay1 ID 110 OF oDlg
          REDEFINE SAY oSay2 ID 120 OF oDlg
          REDEFINE METER oMeter1 VAR nAmount1 ID 130 OF oDlg
          REDEFINE SAY oSay3 ID 140 OF oDlg
          REDEFINE METER oMeter2 VAR nAmount2 ID 150 OF oDlg
          REDEFINE BUTTON oBtnCancel ID 2 OF oDlg ;
             ACTION ( lEnd := .t., SysRefresh(), oDlg:End() )
          oDlg:bStart := { || GetFiles( aSource, aTarget, nBufSize,;
                                  oSay1, oSay2, oMeter1, oSay3, oMeter2,;
                                  @lEnd, oDlg, oFTP ),;
                       oBtnCancel:SetText( "&Ok" )  }
   ACTIVATE DIALOG oDlg CENTERED
   fErase( cPath+"ESTOQUE.CDX" )
   USE ESTOQUE EXCLUSIVE                                   
       MsgRun( "Indexando ESTOQ016...", "Aguarde", {|| ( ordCondSet(,,,,,, RECNO(),,,, ) , ordCreate("estoque", "estoq016", "str(iditem,16,0)", {|| str(iditem,16,0) }, ) ) } )
       MsgRun( "Indexando ESTOQ017...", "Aguarde", {|| ( ordCondSet(,,,,,, RECNO(),,,, ) , ordCreate("estoque", "estoq017", "STR(REFERENCIA,16,0)", {|| STR(REFERENCIA,16,0) }, ) ) } )
       MsgRun( "Indexando ESTOQ018...", "Aguarde", {|| ( ordCondSet(,,,,,, RECNO(),,,, ) , ordCreate("estoque", "estoq018", "RESUMIDO", {|| RESUMIDO }, ) ) } )
       MsgRun( "Indexando ESTOQ019...", "Aguarde", {|| ( ordCondSet(,,,,,, RECNO(),,,, ) , ordCreate("estoque", "estoq019", "DESCRICAO", {|| DESCRICAO }, ) ) } )
       MsgRun( "Indexando ESTOQ020...", "Aguarde", {|| ( ordCondSet(,,,,,, RECNO(),,,, ) , ordCreate("estoque", "estoq020", "STR(IDLINHA,3,0)", {|| STR(IDLINHA,3,0) }, ) ) } )
       MsgRun( "Indexando ESTOQ021...", "Aguarde", {|| ( ordCondSet(,,,,,, RECNO(),,,, ) , ordCreate("estoque", "estoq021", "FABRICANTE", {|| FABRICANTE }, ) ) } )
   ESTOQUE->(dbCloseArea())
   USE ESTOQUE NEW SHARED INDEX ESTOQUE
   oInternet:End()
return nil

static function GetFiles( aSource, aTarget, nBufSize, oSay1, oSay2,;
                          oMeter1, oSay3, oMeter2, lEnd, oDlg, oFTP )
   local n
   local hTarget
   local cBuffer := Space( nBufSize )
   local nBytes, nFile := 0, nTotal := 0
   local nTotSize := 0
   local oFile, aFiles, aSizes := {}
   for n = 1 to Len( aSource )
       aFiles = oFTP:Directory( aSource[ n ] )
       if Len( aFiles ) > 0
          AAdd( aSizes, aFiles[ 1 ][ 2 ] ) // first file, size
          nTotSize += ATail( aSizes )
       else
          AAdd( aSizes, 0 )
       endif
       SysRefresh()
   next
   oMeter2:nTotal = nTotSize
   for n = 1 to Len( aSource )
       hTarget = FCreate( aTarget[ n ] )
       oFile = TFtpFile():New( aSource[ n ], oFTP )
       oFile:OpenRead()
       oSay1:SetText( "Origem: " + aSource[ n ] )
       oSay2:SetText( "Destino: " + aTarget[ n ] )
       oMeter1:Set( 0 )
       oMeter1:nTotal = aSizes[ n ]
       nFile := 0
       SysRefresh()
       while ( nBytes := Len( cBuffer := oFile:Read( nBufSize ) ) ) > 0 .and. ! lEnd
          FWrite( hTarget, cBuffer, nBytes )
          oSay3:SetText( "Bytes copiados: " + ;
                         AllTrim( Str( nTotal += nBytes ) ) )
          oMeter1:Set( nFile += nBytes )
          oMeter2:Set( nTotal )
          SysRefresh()
       end
       FClose( hTarget )
       oFile:End()
       if lEnd
         exit
       endif
   next
   return nil
No codigo acima eu uso o ICopyFile como base e tudo foi testado em Windows 2003 que possui as mesma compatibilidades do XP.

O ICpyFile esta em um diretorio do Fivewin de uma olhada e qualquer coisa grite