Biel's program run perfect under xHarbour and xBuilder. Please use the following code:
///// FUNCIONES PARA CONVERIR HORA A SEGUNDOS, Y VICEVERSA
// Nota: me comentan que al compilar con xHarbour falta la funci贸n HB_IsChar, simplemente sustituir HB_ISCHAR( cTime ) por ValType(cTime)=='C'.
//---------------------------------
STATIC FUNCTION 聽TIMETOSEC( cTime )
local nSec := 0, nLen, i, aLim, aMod, nInd, n
if cTime == NIL
聽 聽nSec := seconds()
elseif ValType(cTime)=='C' 聽//HB_ISCHAR( cTime )
聽 聽nLen := len( cTime )
聽 聽if ( nLen + 1 ) % 3 == 0 .and. nLen <= 11
聽 聽 聽 nInd := 1
聽 聽 聽 aLim := { 24, 60, 60, 100 }
聽 聽 聽 aMod := { 3600, 60, 1, 1/100 }
聽 聽 聽 for i := 1 to nLen step 3
聽 聽 聽 聽 聽if isdigit( substr( cTime, i, 聽 聽 1 ) ) .and. ;
聽 聽 聽 聽 聽 聽 isdigit( substr( cTime, i + 1, 1 ) ) .and. ;
聽 聽 聽 聽 聽 聽 ( i == nLen - 1 .or. substr( cTime, i + 2, 1 ) == ":" ) .and. ;
聽 聽 聽 聽 聽 聽 ( n := val( substr( cTime, i, 2 ) ) ) < aLim[ nInd ]
聽 聽 聽 聽 聽 聽 nSec += n * aMod[ nInd ]
聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 nSec := 0
聽 聽 聽 聽 聽 聽 exit
聽 聽 聽 聽 聽endif
聽 聽 聽 聽 聽++nInd
聽 聽 聽 next
聽 聽endif
endif
return round( nSec, 2) /* round FL val to be sure that you can compare it */
#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 ) ;
}
#define FA_RDONLY 聽 聽 聽 聽 聽 1 聽 /* R */
#define FA_HIDDEN 聽 聽 聽 聽 聽 2 聽 /* H */
#define FA_SYSTEM 聽 聽 聽 聽 聽 4 聽 /* S */
#define FA_LABEL 聽 聽 聽 聽 聽 聽8 聽 /* V */
#define FA_DIREC 聽 聽 聽 聽 聽 16 聽 /* D */
#define FA_ARCH 聽 聽 聽 聽 聽 聽32 聽 /* A */
#define FA_NORMAL 聽 聽 聽 聽 聽 0
HB_FUNC(_FILESIZE)
聽 聽{
聽 聽LPCTSTR szFile;
聽 聽DWORD dwFlags=FILE_ATTRIBUTE_ARCHIVE;
聽 聽HANDLE hFind;
聽 聽WIN32_FIND_DATA 聽hFilesFind;
聽 聽 聽 int iAttr;
聽 聽 聽 if (hb_pcount() >=1){
聽 聽 聽 聽 聽szFile=hb_parc(1);
聽 聽 聽 聽 聽if (ISNUM(2)) 聽 聽 聽{
聽 聽 聽 聽 聽 聽 iAttr=hb_parnl(2);
聽 聽 聽 聽 聽}
聽 聽 聽 聽 聽else{
聽 聽 聽 聽 聽iAttr=63;
聽 聽 聽 聽 聽}
聽 聽 聽 聽 聽 聽 if( iAttr & FA_RDONLY )
聽 聽 聽 聽 聽 聽 聽 聽dwFlags |= FILE_ATTRIBUTE_READONLY;
聽 聽 聽 聽 聽 聽 if( iAttr & FA_HIDDEN )
聽 聽 聽 聽 聽 聽 聽 聽dwFlags |= FILE_ATTRIBUTE_HIDDEN;
聽 聽 聽 聽 聽 聽 if( iAttr & FA_SYSTEM )
聽 聽 聽 聽 聽 聽 聽 聽dwFlags |= FILE_ATTRIBUTE_SYSTEM;
聽 聽 聽 聽 聽 聽 if( iAttr & FA_NORMAL )
聽 聽 聽 聽 聽 聽 聽 聽dwFlags |= 聽 聽FILE_ATTRIBUTE_NORMAL;
聽 聽 聽 聽 聽 聽 hFind = FindFirstFile(szFile,&hFilesFind);
聽 聽 聽 聽 聽 聽 聽 聽 聽 if (hFind != INVALID_HANDLE_VALUE){
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 if (dwFlags & hFilesFind.dwFileAttributes) {
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽if(hFilesFind.nFileSizeHigh>0)
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 hb_retnl((hFilesFind.nFileSizeHigh*MAXDWORD)+hFilesFind.nFileSizeLow);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 hb_retnl(hFilesFind.nFileSizeLow);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽}
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽hb_retnl(-1);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽}
聽 聽 聽 聽 聽}
}
#pragma ENDDUMP