FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Actualizar el programa desde FTP.
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Actualizar el programa desde FTP.
Posted: Fri Feb 23, 2018 10:58 PM
Hola a todos,

Estoy intentando usar una rutina de Biel Maimó (muchas gracias Biel !!) para actualizar el programa que he desarrollado a través de una conexión FTP.

El caso es que la rutina de Biel me da estos errores al compilar:

c:\desarrol\treball\Ampa1507\obj\UPDATE00.c:
Warning W8075 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 151:
Suspicious pointer conversion in function HB_FUN_FILETIMES
Warning W8065 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 152:
Call to function 'ISNUM' with no prototype in function HB_FUN_FILETIMES
Error E2227 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 183: Ex
tra parameter in call to hb_storni in function HB_FUN_FILETIMES
Error E2227 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 184: Ex
tra parameter in call to hb_storni in function HB_FUN_FILETIMES
Error E2227 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 185: Ex
tra parameter in call to hb_storni in function HB_FUN_FILETIMES
Error E2227 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 186: Ex
tra parameter in call to hb_storni in function HB_FUN_FILETIMES
Error E2227 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 187: Ex
tra parameter in call to hb_storni in function HB_FUN_FILETIMES
Error E2227 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 188: Ex
tra parameter in call to hb_storni in function HB_FUN_FILETIMES
Warning W8065 c:\\desarrol\\treball\\Ampa1507\\prg\\arquitec\\UPDATE00.PRG 208:
Call to function 'ISNUM' with no prototype in function HB_FUN_FILESIZE
*** 6 errors in Compile ***

línea 151 LPSTR cFileName = hb_parc( 1 ) ;
línea 152 int nTime = ( ISNUM( 2 ) ? hb_parni( 2 ) : 1 ) ; // defaults to 1
línea 183 hb_storni( stTime.wYear, -1, 1 ) ;
línea 184, 185, 186, 187 y 188 similares a la 183

El código es:

Code (fw): Select all Collapse
#pragma BEGINDUMP
#include <Windows.h>
#include <mapiwin.h>
#include <hbApi.h>
                     //nTime 1=Last Update, 2=Last Acces, 3=Creation, defecto last update
HB_FUNC( FILETIMES ) // params cFileName, nTime --> { nYear, nMonth, nDay, nHour, nMin, nSec }
{
   LPSTR cFileName = hb_parc( 1 ) ;
   int nTime       = ( ISNUM( 2 ) ? hb_parni( 2 ) :  1 ) ; // defaults to 1

   FILETIME ftCreate, ftAccess, ftWrite ;
   SYSTEMTIME stTime ;
   BOOL bRet ;
   HANDLE hFile = CreateFile( cFileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ) ;

   if( ! hFile )
      return ;

   GetFileTime( (HANDLE) hFile, &ftCreate, &ftAccess, &ftWrite ) ;

   switch( nTime )
   {
      case 1 : // last update
         FileTimeToSystemTime( &ftWrite, &stTime ) ;
         break ;
      case 2 : // last access
         FileTimeToSystemTime( &ftAccess, &stTime ) ;
         break ;
      case 3 : // creation
         FileTimeToSystemTime( &ftCreate, &stTime ) ;
         break ;
      default : // last update
         FileTimeToSystemTime( &ftWrite, &stTime ) ;
         break ;
   }

   SystemTimeToTzSpecificLocalTime( NULL, &stTime, &stTime ) ;
   CloseHandle( hFile ) ;
   hb_reta( 6 ) ;
   hb_storni( stTime.wYear,   -1, 1 ) ;
   hb_storni( stTime.wMonth,  -1, 2 ) ;
   hb_storni( stTime.wDay,    -1, 3 ) ;
   hb_storni( stTime.wHour,   -1, 4 ) ;
   hb_storni( stTime.wMinute, -1, 5 ) ;
   hb_storni( stTime.wSecond, -1, 6 ) ;
}


Que está mal y cómo se arregla?

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 148
Joined: Tue Mar 20, 2007 03:13 PM
Re: Actualizar el programa desde FTP.
Posted: Wed Feb 28, 2018 01:10 PM

Olá,

Procure por uma rotina do José Javier Lloris - PFtp ela mostra tudo como fazer ftp de uma arquivo. Bastante detalhada.

Att.,

Oliveiros Junior

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Actualizar el programa desde FTP.
Posted: Wed Feb 28, 2018 01:25 PM
Carlos, prueba asi

Code (fw): Select all Collapse
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
//#include "hbapierr.h"
//#include "hbapifs.h"

                     //nTime 1=Last Update, 2=Last Acces, 3=Creation, defecto last update
HB_FUNC( FILETIMES ) // params cFileName, nTime --> { nYear, nMonth, nDay, nHour, nMin, nSec }
{
   LPSTR cFileName = ( LPSTR ) hb_parc( 1 ) ;
   int nTime       = ( HB_ISNUM( 2 ) ? hb_parni( 2 ) :  1 ) ; // defaults to 1

   FILETIME ftCreate, ftAccess, ftWrite ;
   SYSTEMTIME stTime ;
   BOOL bRet ;
   HANDLE hFile = CreateFile( cFileName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ) ;

   if( ! hFile )
      return ;

   GetFileTime( (HANDLE) hFile, &ftCreate, &ftAccess, &ftWrite ) ;

   switch( nTime )
   {
      case 1 : // last update
         FileTimeToSystemTime( &ftWrite, &stTime ) ;
         break ;
      case 2 : // last access
         FileTimeToSystemTime( &ftAccess, &stTime ) ;
         break ;
      case 3 : // creation
         FileTimeToSystemTime( &ftCreate, &stTime ) ;
         break ;
      default : // last update
         FileTimeToSystemTime( &ftWrite, &stTime ) ;
         break ;
   }

   SystemTimeToTzSpecificLocalTime( NULL, &stTime, &stTime ) ;
   CloseHandle( hFile ) ;
   hb_reta( 6 ) ;
   hb_storvni( stTime.wYear,   -1, 1 ) ;
   hb_storvni( stTime.wMonth,  -1, 2 ) ;
   hb_storvni( stTime.wDay,    -1, 3 ) ;
   hb_storvni( stTime.wHour,   -1, 4 ) ;
   hb_storvni( stTime.wMinute, -1, 5 ) ;
   hb_storvni( stTime.wSecond, -1, 6 ) ;
}
 
#pragma ENDDUMP


Aunque no sé si te servirán, también tienes las funciones

Code (fw): Select all Collapse
? FDate( cFile ), FTime( cFile )
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Actualizar el programa desde FTP.
Posted: Fri Mar 02, 2018 08:00 PM

Gracias Cristobal,

Al final he optado por no usar esta función.

Esta función en el código de Biel se utiliza para obtener la fecha y hora de la versión que está disponible en la red, y con ello saber si es más actual que la que se está ejecutando.

Entiendo que esto implica que sólo puede haber una actualización disponible en la red, con lo cual las versiones distribuídas en los usuarios se actualizarían directamente a esta última versión.

Yo he optado por que el nombre de la distribución contenga el número de versión, con lo cual puede haber 'n' actualizaciones disponibles en la red y con ello iría actualizando paso a paso; pero claro si uso la manera de Biel de comprobar la fecha del fichero, cuando bajo éste desde la red a local, la fecha será la del momento de bajada, y esta fecha sería siempre superior al resto de versiones que quedan disponibles para actualizar en la red.

Creo que me he enrollado; es viernes y las neuronas van como quieren.

Buen fin de semana,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion