- Centralizada la declaración de DLLs para poder inicializarlas en el Init() y en el execute()
- Mejorado el OnEscape para minimizar posibilidad de errores no controlados y restaurar seteo previo a FoxBin - Clase interna c_conversor_base cambiada de session a custom, ya que la principal (c_foxbin2prg) es session, así se evitan funcionamientos raros
This commit is contained in:
@@ -772,26 +772,7 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
THIS.l_CancelWithEscKey = ( tcCancelWithEscKey == '1' )
|
THIS.l_CancelWithEscKey = ( tcCancelWithEscKey == '1' )
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
IF THIS.l_CancelWithEscKey THEN
|
THIS.declareDLL()
|
||||||
ON ESCAPE ERROR 1799
|
|
||||||
SET ESCAPE ON
|
|
||||||
ENDIF
|
|
||||||
|
|
||||||
*-- Funciones para escribir en StdOut
|
|
||||||
DECLARE INTEGER 'GetStdHandle' IN WIN32API AS fb2p_GetStdHandle INTEGER nHandleType
|
|
||||||
DECLARE INTEGER 'WriteFile' IN WIN32API AS fb2p_WriteFile INTEGER hFile, STRING @ cBuffer, INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3
|
|
||||||
*-- Funciones para changeFileTime
|
|
||||||
DECLARE INTEGER 'SetFileTime' IN WIN32API AS fb2p_SetFileTime INTEGER hFile, STRING lpCreationTime, STRING lpLastAccessTime, STRING lpLastWriteTime
|
|
||||||
DECLARE INTEGER 'GetFileAttributesEx' IN Win32API AS fb2p_GetFileAttributesEx STRING lpFileName, INTEGER fInfoLevelId, STRING @ lpFileInformation
|
|
||||||
DECLARE INTEGER 'LocalFileTimeToFileTime' IN Win32API AS fb2p_LocalFileTimeToFileTime STRING LOCALFILETIME, STRING @ FILETIME
|
|
||||||
DECLARE INTEGER 'FileTimeToSystemTime' IN Win32API AS fb2p_FileTimeToSystemTime STRING FILETIME, STRING @ SYSTEMTIME
|
|
||||||
DECLARE INTEGER 'SystemTimeToFileTime' IN Win32API AS fb2p_SystemTimeToFileTime STRING lpSYSTEMTIME, STRING @ FILETIME
|
|
||||||
DECLARE INTEGER '_lopen' IN Win32API AS fb2p_lopen STRING lpFileName, INTEGER iReadWrite
|
|
||||||
DECLARE INTEGER '_lclose' IN Win32API AS fb2p_lclose INTEGER hFile
|
|
||||||
*-- Funciones para changeFileAttributes
|
|
||||||
DECLARE SHORT 'SetFileAttributes' IN Win32API AS fb2p_SetFileAttributes STRING tcFileName, INTEGER dwFileAttributes
|
|
||||||
DECLARE INTEGER 'GetFileAttributes' IN Win32API AS fb2p_GetFileAttributes STRING tcFileName
|
|
||||||
*--
|
|
||||||
|
|
||||||
IF FILE(THIS.c_ErrorLogFile) THEN
|
IF FILE(THIS.c_ErrorLogFile) THEN
|
||||||
ERASE (THIS.c_ErrorLogFile + '.BAK')
|
ERASE (THIS.c_ErrorLogFile + '.BAK')
|
||||||
@@ -849,7 +830,6 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
CATCH
|
CATCH
|
||||||
|
|
||||||
FINALLY
|
FINALLY
|
||||||
ON ESCAPE
|
|
||||||
THIS.o_FSO = NULL
|
THIS.o_FSO = NULL
|
||||||
THIS.o_WSH = NULL
|
THIS.o_WSH = NULL
|
||||||
THIS.o_FNC = NULL
|
THIS.o_FNC = NULL
|
||||||
@@ -964,6 +944,25 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
|
PROCEDURE declareDLL
|
||||||
|
*-- Funciones para escribir en StdOut
|
||||||
|
DECLARE INTEGER 'GetStdHandle' IN WIN32API AS fb2p_GetStdHandle INTEGER nHandleType
|
||||||
|
DECLARE INTEGER 'WriteFile' IN WIN32API AS fb2p_WriteFile INTEGER hFile, STRING @ cBuffer, INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3
|
||||||
|
*-- Funciones para changeFileTime
|
||||||
|
DECLARE INTEGER 'SetFileTime' IN WIN32API AS fb2p_SetFileTime INTEGER hFile, STRING lpCreationTime, STRING lpLastAccessTime, STRING lpLastWriteTime
|
||||||
|
DECLARE INTEGER 'GetFileAttributesEx' IN Win32API AS fb2p_GetFileAttributesEx STRING lpFileName, INTEGER fInfoLevelId, STRING @ lpFileInformation
|
||||||
|
DECLARE INTEGER 'LocalFileTimeToFileTime' IN Win32API AS fb2p_LocalFileTimeToFileTime STRING LOCALFILETIME, STRING @ FILETIME
|
||||||
|
DECLARE INTEGER 'FileTimeToSystemTime' IN Win32API AS fb2p_FileTimeToSystemTime STRING FILETIME, STRING @ SYSTEMTIME
|
||||||
|
DECLARE INTEGER 'SystemTimeToFileTime' IN Win32API AS fb2p_SystemTimeToFileTime STRING lpSYSTEMTIME, STRING @ FILETIME
|
||||||
|
DECLARE INTEGER '_lopen' IN Win32API AS fb2p_lopen STRING lpFileName, INTEGER iReadWrite
|
||||||
|
DECLARE INTEGER '_lclose' IN Win32API AS fb2p_lclose INTEGER hFile
|
||||||
|
*-- Funciones para changeFileAttributes
|
||||||
|
DECLARE SHORT 'SetFileAttributes' IN Win32API AS fb2p_SetFileAttributes STRING tcFileName, INTEGER dwFileAttributes
|
||||||
|
DECLARE INTEGER 'GetFileAttributes' IN Win32API AS fb2p_GetFileAttributes STRING tcFileName
|
||||||
|
*--
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE get_AbsolutePath
|
PROCEDURE get_AbsolutePath
|
||||||
LPARAMETERS tc_InputFile, tc_FullPath
|
LPARAMETERS tc_InputFile, tc_FullPath
|
||||||
|
|
||||||
@@ -2347,6 +2346,7 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
TRY
|
TRY
|
||||||
LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5), lcInputFile_Type, lc_OldSetNotify ;
|
LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laDirInfo(1,5), lcInputFile_Type, lc_OldSetNotify ;
|
||||||
, lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption, lnErrorIcon, llError ;
|
, lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption, lnErrorIcon, llError ;
|
||||||
|
, lcOldSetEscape, lcOldOnEscape, llEscKeyRestored ;
|
||||||
, loEx AS EXCEPTION ;
|
, loEx AS EXCEPTION ;
|
||||||
, loFSO AS Scripting.FileSystemObject ;
|
, loFSO AS Scripting.FileSystemObject ;
|
||||||
, loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ;
|
, loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ;
|
||||||
@@ -2365,7 +2365,14 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
lcInputFile_Type = ''
|
lcInputFile_Type = ''
|
||||||
.l_Error = .F.
|
.l_Error = .F.
|
||||||
tcType = UPPER( EVL(tcType,'') )
|
tcType = UPPER( EVL(tcType,'') )
|
||||||
|
.declareDLL()
|
||||||
|
|
||||||
|
IF THIS.l_CancelWithEscKey THEN
|
||||||
|
lcOldSetEscape = SET("Escape")
|
||||||
|
lcOldOnEscape = ON("Escape")
|
||||||
|
ON ESCAPE ERROR 1799
|
||||||
|
SET ESCAPE ON
|
||||||
|
ENDIF
|
||||||
|
|
||||||
DO CASE
|
DO CASE
|
||||||
CASE VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504
|
CASE VERSION(5) < 900 OR INT( VAL( SUBSTR( VERSION(4), RAT('.', VERSION(4)) + 1 ) ) ) < 3504
|
||||||
@@ -2526,6 +2533,7 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
CASE ATC('-BIN2PRG', ('-' + tcType)) = 0 AND ATC('-PRG2BIN', ('-' + tcType)) = 0 ;
|
CASE ATC('-BIN2PRG', ('-' + tcType)) = 0 AND ATC('-PRG2BIN', ('-' + tcType)) = 0 ;
|
||||||
AND lcInputFile_Type == C_FILETYPE_FILE ;
|
AND lcInputFile_Type == C_FILETYPE_FILE ;
|
||||||
AND ( '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) )
|
AND ( '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) )
|
||||||
|
|
||||||
IF .l_ShowErrors
|
IF .l_ShowErrors
|
||||||
*MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).', 0+48+4096, 'FOXBIN2PRG: ERROR!!', 60000 )
|
*MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).', 0+48+4096, 'FOXBIN2PRG: ERROR!!', 60000 )
|
||||||
MESSAGEBOX( loLang.C_ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, 'FoxBin2Prg ' + THIS.c_FB2PRG_EXE_Version + ': ' + loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 )
|
MESSAGEBOX( loLang.C_ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, 'FoxBin2Prg ' + THIS.c_FB2PRG_EXE_Version + ': ' + loLang.C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 )
|
||||||
@@ -2852,6 +2860,21 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
ENDWITH && THIS
|
ENDWITH && THIS
|
||||||
|
|
||||||
CATCH TO toEx
|
CATCH TO toEx
|
||||||
|
IF THIS.l_CancelWithEscKey THEN
|
||||||
|
IF EMPTY(lcOldOnEscape)
|
||||||
|
ON ESCAPE
|
||||||
|
ELSE
|
||||||
|
ON ESCAPE &lcOldOnEscape.
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF EMPTY(lcOldSetEscape)
|
||||||
|
SET ESCAPE OFF
|
||||||
|
ELSE
|
||||||
|
SET ESCAPE &lcOldSetEscape.
|
||||||
|
ENDIF
|
||||||
|
llEscKeyRestored = .T.
|
||||||
|
ENDIF
|
||||||
|
|
||||||
lnCodError = toEx.ERRORNO
|
lnCodError = toEx.ERRORNO
|
||||||
lnErrorIcon = 64
|
lnErrorIcon = 64
|
||||||
|
|
||||||
@@ -2888,6 +2911,20 @@ DEFINE CLASS c_foxbin2prg AS Session
|
|||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
FINALLY
|
FINALLY
|
||||||
|
IF NOT llEscKeyRestored AND THIS.l_CancelWithEscKey THEN
|
||||||
|
IF EMPTY(lcOldOnEscape)
|
||||||
|
ON ESCAPE
|
||||||
|
ELSE
|
||||||
|
ON ESCAPE &lcOldOnEscape.
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF EMPTY(lcOldSetEscape)
|
||||||
|
SET ESCAPE OFF
|
||||||
|
ELSE
|
||||||
|
SET ESCAPE &lcOldSetEscape.
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
IF VARTYPE(loLang) <> 'O' THEN
|
IF VARTYPE(loLang) <> 'O' THEN
|
||||||
loLang = CREATEOBJECT("CL_LANG","EN")
|
loLang = CREATEOBJECT("CL_LANG","EN")
|
||||||
ENDIF
|
ENDIF
|
||||||
@@ -4824,7 +4861,7 @@ ENDDEFINE
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEFINE CLASS c_conversor_base AS Session
|
DEFINE CLASS c_conversor_base AS Custom
|
||||||
#IF .F.
|
#IF .F.
|
||||||
LOCAL THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
LOCAL THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||||
#ENDIF
|
#ENDIF
|
||||||
|
|||||||
Reference in New Issue
Block a user