From 9b8aaed74ea0b35aa1b5f16d72aa1413ab647b1b Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Wed, 29 Apr 2015 23:24:03 +0200 Subject: [PATCH] =?UTF-8?q?-=20Centralizada=20la=20declaraci=C3=B3n=20de?= =?UTF-8?q?=20DLLs=20para=20poder=20inicializarlas=20en=20el=20Init()=20y?= =?UTF-8?q?=20en=20el=20execute()=20-=20Mejorado=20el=20OnEscape=20para=20?= =?UTF-8?q?minimizar=20posibilidad=20de=20errores=20no=20controlados=20y?= =?UTF-8?q?=20restaurar=20seteo=20previo=20a=20FoxBin=20-=20Clase=20intern?= =?UTF-8?q?a=20c=5Fconversor=5Fbase=20cambiada=20de=20session=20a=20custom?= =?UTF-8?q?,=20ya=20que=20la=20principal=20(c=5Ffoxbin2prg)=20es=20session?= =?UTF-8?q?,=20as=C3=AD=20se=20evitan=20funcionamientos=20raros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foxbin2prg.prg | 81 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 22 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 2d51065..cfa3ac4 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -772,26 +772,7 @@ DEFINE CLASS c_foxbin2prg AS Session THIS.l_CancelWithEscKey = ( tcCancelWithEscKey == '1' ) ENDIF - IF THIS.l_CancelWithEscKey THEN - 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 - *-- + THIS.declareDLL() IF FILE(THIS.c_ErrorLogFile) THEN ERASE (THIS.c_ErrorLogFile + '.BAK') @@ -849,7 +830,6 @@ DEFINE CLASS c_foxbin2prg AS Session CATCH FINALLY - ON ESCAPE THIS.o_FSO = NULL THIS.o_WSH = NULL THIS.o_FNC = NULL @@ -964,6 +944,25 @@ DEFINE CLASS c_foxbin2prg AS Session 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 LPARAMETERS tc_InputFile, tc_FullPath @@ -2347,6 +2346,7 @@ DEFINE CLASS c_foxbin2prg AS Session TRY 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 ; + , lcOldSetEscape, lcOldOnEscape, llEscKeyRestored ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ; @@ -2365,7 +2365,14 @@ DEFINE CLASS c_foxbin2prg AS Session lcInputFile_Type = '' .l_Error = .F. 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 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 ; AND lcInputFile_Type == C_FILETYPE_FILE ; AND ( '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) ) + IF .l_ShowErrors *MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vací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 ) @@ -2852,6 +2860,21 @@ DEFINE CLASS c_foxbin2prg AS Session ENDWITH && THIS 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 lnErrorIcon = 64 @@ -2888,6 +2911,20 @@ DEFINE CLASS c_foxbin2prg AS Session ENDIF 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 loLang = CREATEOBJECT("CL_LANG","EN") ENDIF @@ -4824,7 +4861,7 @@ ENDDEFINE -DEFINE CLASS c_conversor_base AS Session +DEFINE CLASS c_conversor_base AS Custom #IF .F. LOCAL THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG' #ENDIF