Actualizar el programa desde FTP.

Actualizar el programa desde FTP.

Postby FiveWiDi » 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: Select all  Expand view
#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 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1048
Joined: Mon Oct 10, 2005 2:38 pm

Re: Actualizar el programa desde FTP.

Postby oliveiros junior » Wed Feb 28, 2018 1: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
oliveiros junior
 
Posts: 122
Joined: Tue Mar 20, 2007 3:13 pm

Re: Actualizar el programa desde FTP.

Postby cnavarro » Wed Feb 28, 2018 1:25 pm

Carlos, prueba asi

Code: Select all  Expand view


#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: Select all  Expand view

? 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
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Actualizar el programa desde FTP.

Postby FiveWiDi » Fri Mar 02, 2018 8: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 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1048
Joined: Mon Oct 10, 2005 2:38 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 10 guests