- Nueva función ChangeFileTime
- Encapsulada la clase frm_avance para permitir su instanciación por separado de FoxBin2Prg - Nuevo indicador chk_FileTimeStampOptimization en la clase frm_interactive para permitir marcar/desmarcar la optimización por file timestamp
This commit is contained in:
249
foxbin2prg.prg
249
foxbin2prg.prg
@@ -516,7 +516,7 @@ QUIT
|
||||
|
||||
|
||||
|
||||
DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
DEFINE CLASS c_foxbin2prg AS Session
|
||||
_MEMBERDATA = [<VFPData>] ;
|
||||
+ [<memberdata name="addprocessedfile" display="addProcessedFile"/>] ;
|
||||
+ [<memberdata name="avancedelproceso" display="AvanceDelProceso"/>] ;
|
||||
@@ -546,6 +546,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
+ [<memberdata name="c_sc2" display="c_SC2"/>] ;
|
||||
+ [<memberdata name="c_vc2" display="c_VC2"/>] ;
|
||||
+ [<memberdata name="changefileattribute" display="ChangeFileAttribute"/>] ;
|
||||
+ [<memberdata name="changefiletime" display="ChangeFileTime"/>] ;
|
||||
+ [<memberdata name="compilefoxprobinary" display="compileFoxProBinary"/>] ;
|
||||
+ [<memberdata name="dobackup" display="doBackup"/>] ;
|
||||
+ [<memberdata name="ejecutar" display="Ejecutar"/>] ;
|
||||
@@ -751,9 +752,20 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
ENDIF
|
||||
|
||||
*-- Funciones para escribir en StdOut
|
||||
DECLARE INTEGER GetStdHandle IN Win32API INTEGER nHandleType
|
||||
DECLARE INTEGER WriteFile IN Win32API INTEGER hFile, STRING @ cBuffer ;
|
||||
, INTEGER nBytes, INTEGER @ nBytes2, INTEGER @ nBytes3
|
||||
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
|
||||
ERASE (THIS.c_ErrorLogFile + '.BAK')
|
||||
@@ -815,6 +827,13 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
THIS.o_FSO = NULL
|
||||
THIS.o_WSH = NULL
|
||||
THIS.o_FNC = NULL
|
||||
*-- Funciones para ChangeFileAttributes
|
||||
CLEAR DLLS fb2p_SetFileAttributes, fb2p_GetFileAttributes
|
||||
*-- Funciones para escribir en StdOut
|
||||
CLEAR DLLS fb2p_GetStdHandle, fb2p_WriteFile
|
||||
*-- Funciones para ChangeFileTime
|
||||
CLEAR DLLS fb2p_SetFileTime, fb2p_GetFileAttributesEx, fb2p_LocalFileTimeToFileTime ;
|
||||
, fb2p_FileTimeToSystemTime, fb2p_SystemTimeToFileTime, fb2p_lopen, fb2p_lclose
|
||||
ENDTRY
|
||||
|
||||
RETURN
|
||||
@@ -1279,8 +1298,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
|
||||
TRY
|
||||
LOCAL loEx AS EXCEPTION, dwFileAttributes, dwFileAttributes_Orig, lnRet
|
||||
DECLARE SHORT 'SetFileAttributes' IN kernel32 AS fb2p_SetFileAttributes STRING tcFileName, INTEGER dwFileAttributes
|
||||
DECLARE INTEGER 'GetFileAttributes' IN kernel32 AS fb2p_GetFileAttributes STRING tcFileName
|
||||
lnRet = 0
|
||||
|
||||
* read current attributes for this file
|
||||
@@ -1352,7 +1369,6 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
|
||||
FINALLY
|
||||
THIS.writeLog( C_TAB + LOWER(PROGRAM()) + ' >> [' + tcFileName + '] lnRet = ' + TRANSFORM(lnRet) + ', dwFileAttributes_Orig = ' + TRANSFORM(dwFileAttributes_Orig) )
|
||||
CLEAR DLLS fb2p_SetFileAttributes, fb2p_GetFileAttributes
|
||||
RELEASE tcFileName, tcAttrib, dwFileAttributes
|
||||
ENDTRY
|
||||
|
||||
@@ -1360,6 +1376,96 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
ENDPROC
|
||||
|
||||
|
||||
PROCEDURE ChangeFileTime
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
* CAMBIAR LA FECHA/HORA DE UN ARCHIVO
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
* PAR<41>METROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT)
|
||||
* tcFileName (v! IN ) Nombre del archivo
|
||||
* tcTimeType (v? IN ) C=Creation time, W=Last Write, A=Last Access
|
||||
* tnYear (v? IN ) A<>o (>=1800)
|
||||
* tnMonth (v? IN ) Mes (1-12)
|
||||
* tnDay (v? IN ) D<>a (1-31)
|
||||
* tnHour (v? IN ) Hora (0-23)
|
||||
* tnMinute (v? IN ) Minuto (0-59)
|
||||
* tnSec (v? IN ) Segundo (0-59)
|
||||
* tnThou (v? IN ) <20>? (0-999)
|
||||
*---------------------------------------------------------------------------------------------------
|
||||
LPARAMETERS m.tcFileName, m.tcTimeType, m.tnYear, m.tnMonth, m.tnDay, m.tnHour, m.tnMinute, m.tnSec, m.tnThou
|
||||
|
||||
#DEFINE OF_READWRITE 2
|
||||
|
||||
LOCAL m.lpFileInformation, m.cS, m.nPar, m.fh, M.lpFileInformation, m.lpSysTime, m.cCreation ;
|
||||
, M.cLastAccess, m.cLastWrite, m.cBuffTime, m.cBuffTime1, M.cTT,m.nYear1, m.nMonth1, m.nDay1, m.nHour1 ;
|
||||
, M.nMinute1, m.nSec1, m.nThou1, llRetorno
|
||||
|
||||
TRY
|
||||
m.nPar = PCOUNT()
|
||||
|
||||
IF m.nPar < 1
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
m.cTT = IIF( m.nPar >= 2 AND VARTYPE(m.tcTimeType) = "C" AND NOT EMPTY(m.tcTimeType), LOWER(SUBSTR(m.tcTimeType,1,1)), "c" )
|
||||
m.nYear1 = IIF( m.nPar >= 3 AND VARTYPE(m.tnYear) $ "FIN" AND m.tnYear >= 1800, ROUND(m.tnYear,0), -1 )
|
||||
m.nMonth1 = IIF( m.nPar >= 4 AND VARTYPE(m.tnMonth) $ "FIN" AND BETWEEN(m.tnMonth,1,12), ROUND(m.tnMonth,0), -1 )
|
||||
m.nDay1 = IIF( m.nPar >= 5 AND VARTYPE(m.tnDay) $ "FIN" AND BETWEEN(m.tnDay,1,31), ROUND(m.tnDay,0), -1 )
|
||||
m.nHour1 = IIF( m.nPar >= 6 AND VARTYPE(m.tnHour) $ "FIN" AND BETWEEN(m.tnHour,0,23), ROUND(m.tnHour,0), -1 )
|
||||
m.nMinute1 = IIF( m.nPar >= 7 AND VARTYPE(m.tnMinute) $ "FIN" AND BETWEEN(m.tnMinute,0,59), ROUND(m.tnMinute,0), -1 )
|
||||
m.nSec1 = IIF( m.nPar >= 8 AND VARTYPE(m.tnSec) $ "FIN" AND BETWEEN(m.tnSec,0,59), ROUND(m.tnSec,0), -1 )
|
||||
m.nThou1 = IIF( m.nPar >= 9 AND VARTYPE(m.tnThou) $ "FIN" AND BETWEEN(m.tnThou,0,999), ROUND(m.tnThou,0), -1 )
|
||||
m.lpFileInformation = REPLICATE( CHR(0), 53 ) && just a buffer
|
||||
m.lpSysTime = REPLICATE( CHR(0), 16 ) && just a buffer
|
||||
|
||||
IF fb2p_GetFileAttributesEx(m.tcFileName, 0, @lpFileInformation) = 0
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
m.cCreation = SUBSTR(m.lpFileInformation,5,8)
|
||||
m.cLastAccess = SUBSTR(m.lpFileInformation,13,8)
|
||||
m.cLastWrite = SUBSTR(m.lpFileInformation,21,8)
|
||||
m.cBuffTime = IIF(m.cTT="w",m.cLastWrite, IIF(m.cTT="a",m.cLastAccess,m.cCreation))
|
||||
|
||||
fb2p_FileTimeToSystemTime(m.cBuffTime, @lpSysTime)
|
||||
|
||||
m.lpSysTime = ;
|
||||
IIF( m.nYear1 >= 0, BINTOC(m.nYear1,"2RS"), SUBSTR(m.lpSysTime,1,2) ) ;
|
||||
+ IIF( m.nMonth1 >= 0, BINTOC(m.nMonth1,"2RS"), SUBSTR(m.lpSysTime,3,2) ) ;
|
||||
+ SUBSTR(m.lpSysTime,5,2) ;
|
||||
+ IIF( m.nDay1 >= 0, BINTOC(m.nDay1,"2RS"), SUBSTR(m.lpSysTime,7,2) ) ;
|
||||
+ IIF( m.nHour1 >= 0, BINTOC(m.nHour1,"2RS"), SUBSTR(m.lpSysTime,9,2) ) ;
|
||||
+ IIF( m.nMinute1 >= 0, BINTOC(m.nMinute1,"2RS"), SUBSTR(m.lpSysTime,11,2) ) ;
|
||||
+ IIF( m.nSec1 >= 0, BINTOC(m.nSec1,"2RS"), SUBSTR(m.lpSysTime,13,2) ) ;
|
||||
+ IIF( m.nThou1 >= 0, BINTOC(m.nThou1,"2RS"), SUBSTR(m.lpSysTime,15,2) )
|
||||
|
||||
fb2p_SystemTimeToFileTime(m.lpSysTime,@cBuffTime)
|
||||
m.cBuffTime1 = m.cBuffTime
|
||||
fb2p_LocalFileTimeToFileTime(m.cBuffTime1,@cBuffTime)
|
||||
|
||||
DO CASE
|
||||
CASE m.cTT = "w"
|
||||
m.cLastWrite=m.cBuffTime
|
||||
CASE m.cTT = "a"
|
||||
m.cLastAccess=m.cBuffTime
|
||||
OTHERWISE && "c"
|
||||
m.cCreation=m.cBuffTime
|
||||
ENDCASE
|
||||
|
||||
m.fh = fb2p_lopen (m.tcFileName, OF_READWRITE)
|
||||
|
||||
IF m.fh < 0
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
fb2p_SetFileTime (m.fh,m.cCreation, m.cLastAccess, m.cLastWrite)
|
||||
fb2p_lclose(m.fh)
|
||||
llRetorno = .T.
|
||||
ENDTRY
|
||||
|
||||
RETURN llRetorno
|
||||
ENDPROC
|
||||
|
||||
|
||||
PROCEDURE compileFoxProBinary
|
||||
LPARAMETERS tcFileName
|
||||
LOCAL lcType
|
||||
@@ -2199,6 +2305,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
lnPCount = 0
|
||||
lcInputFile_Type = ''
|
||||
|
||||
|
||||
IF .l_AutoClearProcessedFiles THEN
|
||||
.ClearProcessedFiles() && Para evitar acumular procesos anteriores
|
||||
ENDIF
|
||||
@@ -2302,6 +2409,15 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
loFrm_Interactive.Show()
|
||||
READ EVENTS
|
||||
lnConversionOption = loFrm_Interactive.n_ConversionType
|
||||
|
||||
IF loFrm_Interactive.l_FileTimeStampOptimization
|
||||
IF .n_OptimizeByFilestamp = 0 THEN
|
||||
.n_OptimizeByFilestamp = 2
|
||||
ENDIF
|
||||
ELSE
|
||||
.n_OptimizeByFilestamp = 0
|
||||
ENDIF
|
||||
|
||||
loFrm_Interactive.Release()
|
||||
loFrm_Interactive = NULL
|
||||
|
||||
@@ -2929,7 +3045,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
LOCAL lnCodError, lcErrorInfo, laDirFile(1,5), lcExtension, lnFileCount, laFiles(1,1), I ;
|
||||
, ltFilestamp, lcExtA, lcExtB, laEvents(1,1), lcForceAttribs ;
|
||||
, loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ;
|
||||
, loConversor as C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG' ;
|
||||
, loConversor as c_conversor_base OF 'FOXBIN2PRG.PRG' ;
|
||||
, loFSO AS Scripting.FileSystemObject
|
||||
lnCodError = 0
|
||||
|
||||
@@ -3177,6 +3293,7 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
STORE {//::} TO .t_InputFile_TimeStamp, .t_OutputFile_TimeStamp, ltFilestamp
|
||||
|
||||
IF lnFileCount >= 1 THEN
|
||||
*-- Busca el archivo de entrada original
|
||||
I = ASCAN( laFiles, JUSTFNAME(.c_InputFile), 1, 0, 1, 1+2+4+8 )
|
||||
IF I > 0 THEN
|
||||
.t_InputFile_TimeStamp = DATETIME( YEAR(laFiles(I,3)), MONTH(laFiles(I,3)), DAY(laFiles(I,3)) ;
|
||||
@@ -3207,17 +3324,18 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
|
||||
ENDCASE
|
||||
|
||||
*-- Tomo el m<>ximo timestamp de los archivos de salida (??X/??T)
|
||||
.t_OutputFile_TimeStamp = MAX( .t_OutputFile_TimeStamp, ltFilestamp )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
DO CASE
|
||||
CASE .n_OptimizeByFilestamp = 1 AND .t_InputFile_TimeStamp < .t_OutputFile_TimeStamp
|
||||
CASE .n_UseClassPerFile = 0 AND .n_OptimizeByFilestamp = 1 AND .t_InputFile_TimeStamp < .t_OutputFile_TimeStamp
|
||||
*-- Optimizado: El Origen es anterior al Destino - No hace falta regenerar
|
||||
*.writeLog( '> El archivo de salida [<<THIS.c_OutputFile>>] no se regenera porque su timestamp es m<>s nuevo que el de entrada.' )
|
||||
.writeLog( C_TAB + C_TAB + '* ' + TEXTMERGE(loLang.C_OUTPUTFILE_TIMESTAMP_NEWER_THAN_INPUTFILE_TIMESTAMP_LOC) )
|
||||
|
||||
CASE .n_OptimizeByFilestamp = 2 AND .t_InputFile_TimeStamp = .t_OutputFile_TimeStamp
|
||||
CASE .n_UseClassPerFile = 0 AND .n_OptimizeByFilestamp = 2 AND .t_InputFile_TimeStamp = .t_OutputFile_TimeStamp
|
||||
*-- Optimizado: El Origen es igual al Destino - No hace falta regenerar
|
||||
*.writeLog( '> El archivo de salida [<<THIS.c_OutputFile>>] no se regenera porque su timestamp es igual que el de entrada.' )
|
||||
.writeLog( C_TAB + C_TAB + '* ' + TEXTMERGE(loLang.C_OUTPUTFILE_TIMESTAMP_EQUAL_THAN_INPUTFILE_TIMESTAMP_LOC) )
|
||||
@@ -3606,10 +3724,10 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
IF THIS.l_StdOutHabilitado
|
||||
LOCAL loException as Exception, lcOutput, lnOutHandle, lnBytesWritten, lnOverlappedIO
|
||||
lcOutput = EVL(tcTexto,'') + CR_LF
|
||||
lnOutHandle = GetStdHandle(-12) && CAPTURAR ERROR DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS 2>&1 | FIND /V ""
|
||||
lnOutHandle = fb2p_GetStdHandle(-12) && CAPTURAR ERROR DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS 2>&1 | FIND /V ""
|
||||
lnBytesWritten = 0
|
||||
lnOverlappedIO = 0
|
||||
WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO)
|
||||
fb2p_WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO)
|
||||
ENDIF
|
||||
|
||||
CATCH TO loException
|
||||
@@ -3629,10 +3747,10 @@ DEFINE CLASS c_foxbin2prg AS SESSION
|
||||
IF THIS.l_StdOutHabilitado
|
||||
LOCAL loException as Exception, lcOutput, lnOutHandle, lnBytesWritten, lnOverlappedIO
|
||||
lcOutput = EVL(tcTexto,'') + CR_LF
|
||||
lnOutHandle = GetStdHandle(-11) && CAPTURAR STDOUT DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS | FIND /V ""
|
||||
lnOutHandle = fb2p_GetStdHandle(-11) && CAPTURAR STDOUT DESDE CONSOLA: FOXBIN2PRG.EXE PARAMS | FIND /V ""
|
||||
lnBytesWritten = 0
|
||||
lnOverlappedIO = 0
|
||||
WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO)
|
||||
fb2p_WriteFile(lnOutHandle, @lcOutput, LEN(lcOutput), @lnBytesWritten, @lnOverlappedIO)
|
||||
ENDIF
|
||||
|
||||
CATCH TO loException
|
||||
@@ -3797,7 +3915,7 @@ ENDDEFINE
|
||||
|
||||
|
||||
|
||||
DEFINE CLASS frm_avance AS FORM
|
||||
DEFINE CLASS frm_avance AS Form
|
||||
Height = 110
|
||||
Width = 628
|
||||
ShowWindow = 2
|
||||
@@ -4226,10 +4344,15 @@ DEFINE CLASS frm_avance AS FORM
|
||||
LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
||||
LOCAL THISFORM AS frm_avance OF foxbin2prg.prg
|
||||
#ENDIF
|
||||
|
||||
LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG'
|
||||
loLang = _SCREEN.o_FoxBin2Prg_Lang
|
||||
|
||||
IF VARTYPE(toFoxBin2Prg) = "O" THEN
|
||||
IF TYPE("_SCREEN.o_FoxBin2Prg_Lang") = "O" THEN
|
||||
loLang = _SCREEN.o_FoxBin2Prg_Lang
|
||||
THISFORM.CAPTION = 'FoxBin2Prg ' + _SCREEN.c_FB2PRG_EXE_Version + ' > - ' + loLang.C_PROCESS_PROGRESS_LOC + ' (' + loLang.C_PRESS_ESC_TO_CANCEL + ')'
|
||||
ENDIF
|
||||
|
||||
IF FILE( FORCEEXT( toFoxBin2Prg.c_Foxbin2prg_FullPath, 'ICO' ) ) THEN
|
||||
THIS.Icon = FORCEEXT( toFoxBin2Prg.c_Foxbin2prg_FullPath, 'ICO' )
|
||||
ENDIF
|
||||
@@ -4239,7 +4362,6 @@ DEFINE CLASS frm_avance AS FORM
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
THISFORM.CAPTION = 'FoxBin2Prg ' + _SCREEN.c_FB2PRG_EXE_Version + ' > - ' + loLang.C_PROCESS_PROGRESS_LOC + ' (' + loLang.C_PRESS_ESC_TO_CANCEL + ')'
|
||||
THISFORM.nValue = 0
|
||||
THISFORM.nValue2 = 0
|
||||
THISFORM.nLastSecCount = SECONDS()
|
||||
@@ -4269,26 +4391,44 @@ ENDDEFINE
|
||||
|
||||
|
||||
|
||||
DEFINE CLASS frm_interactive AS form
|
||||
Height = 102
|
||||
DEFINE CLASS frm_interactive AS Form
|
||||
Height = 114
|
||||
Width = 380
|
||||
ShowWindow = 2
|
||||
DoCreate = .T.
|
||||
AutoCenter = .T.
|
||||
BorderStyle = 2
|
||||
Caption = 'FoxBin2Prg ' + _SCREEN.c_FB2PRG_EXE_Version + ' - ' + _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_LOC
|
||||
Caption = "FoxBin2Prg"
|
||||
ControlBox = .F.
|
||||
AlwaysOnTop = .T.
|
||||
BackColor = RGB(255,255,255)
|
||||
n_ConversionType = 3
|
||||
l_FileTimeStampOptimization = .F.
|
||||
Name = "frm_interactive"
|
||||
_memberdata = [<VFPData>] ;
|
||||
+ [<memberdata name="n_conversiontype" display="n_ConversionType"/>] ;
|
||||
+ [<memberdata name="l_filetimestampoptimization" display="l_FileTimeStampOptimization"/>] ;
|
||||
+ [</VFPData>]
|
||||
|
||||
|
||||
ADD OBJECT 'chk_FileTimeStampOptimization' AS checkbox WITH ;
|
||||
Alignment = 0, ;
|
||||
BackStyle = 0, ;
|
||||
Caption = "chk_FileTimeStampOptimization", ;
|
||||
ControlSource = "THISFORM.l_FileTimeStampOptimization", ;
|
||||
Enabled = .T., ;
|
||||
Height = 17, ;
|
||||
Left = 40, ;
|
||||
Name = "chk_FileTimeStampOptimization", ;
|
||||
Top = 92, ;
|
||||
Width = 300
|
||||
|
||||
|
||||
ADD OBJECT lbl_title AS label WITH ;
|
||||
WordWrap = .T., ;
|
||||
Alignment = 2, ;
|
||||
BackStyle = 0, ;
|
||||
Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_QUESTION_LOC, ;
|
||||
Caption = "lbl_title", ;
|
||||
Height = 36, ;
|
||||
Left = 12, ;
|
||||
Top = 16, ;
|
||||
@@ -4298,29 +4438,29 @@ DEFINE CLASS frm_interactive AS form
|
||||
|
||||
|
||||
ADD OBJECT cmd_Bin2Prg AS commandbutton WITH ;
|
||||
Top = 64, ;
|
||||
Top = 58, ;
|
||||
Left = 40, ;
|
||||
Height = 27, ;
|
||||
Width = 92, ;
|
||||
Caption = _SCREEN.o_FoxBin2Prg_Lang.C_BINARY_TO_TEXT_LOC, ;
|
||||
Caption = "cmd_Bin2Prg", ;
|
||||
Name = "cmd_Bin2Prg"
|
||||
|
||||
|
||||
ADD OBJECT cmd_Prg2Bin AS commandbutton WITH ;
|
||||
Top = 64, ;
|
||||
Top = 58, ;
|
||||
Left = 144, ;
|
||||
Height = 27, ;
|
||||
Width = 92, ;
|
||||
Caption = _SCREEN.o_FoxBin2Prg_Lang.C_TEXT_TO_BINARY_LOC, ;
|
||||
Caption = "cmd_Prg2Bin", ;
|
||||
Name = "cmd_Prg2Bin"
|
||||
|
||||
|
||||
ADD OBJECT cmd_None AS commandbutton WITH ;
|
||||
Top = 64, ;
|
||||
Top = 58, ;
|
||||
Left = 248, ;
|
||||
Height = 27, ;
|
||||
Width = 92, ;
|
||||
Caption = _SCREEN.o_FoxBin2Prg_Lang.C_CONVERT_FOLDER_NONE_LOC, ;
|
||||
Caption = "cmd_None", ;
|
||||
Cancel = .T., ;
|
||||
Name = "cmd_None"
|
||||
|
||||
@@ -4328,7 +4468,29 @@ DEFINE CLASS frm_interactive AS form
|
||||
PROCEDURE INIT
|
||||
LPARAMETERS toFoxBin2Prg
|
||||
|
||||
#IF .F.
|
||||
LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
|
||||
#ENDIF
|
||||
|
||||
LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG'
|
||||
|
||||
IF VARTYPE(toFoxBin2Prg) = "O" THEN
|
||||
IF VARTYPE(_SCREEN.o_FoxBin2Prg_Lang) = "O" THEN
|
||||
loLang = _SCREEN.o_FoxBin2Prg_Lang
|
||||
|
||||
IF PEMSTATUS(_SCREEN, 'c_FB2PRG_EXE_Version', 5) THEN
|
||||
THISFORM.Caption = 'FoxBin2Prg ' + _SCREEN.c_FB2PRG_EXE_Version + ' - ' + loLang.C_CONVERT_FOLDER_LOC
|
||||
ENDIF
|
||||
|
||||
THISFORM.chk_FileTimeStampOptimization.Caption = loLang.C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC
|
||||
THISFORM.lbl_title.Caption = loLang.C_CONVERT_FOLDER_QUESTION_LOC
|
||||
THISFORM.cmd_Bin2Prg.Caption = loLang.C_BINARY_TO_TEXT_LOC
|
||||
THISFORM.cmd_Prg2Bin.Caption = loLang.C_TEXT_TO_BINARY_LOC
|
||||
THISFORM.cmd_None.Caption = loLang.C_CONVERT_FOLDER_NONE_LOC
|
||||
ENDIF
|
||||
|
||||
THISFORM.l_FileTimeStampOptimization = (toFoxBin2Prg.n_OptimizeByFilestamp <> 0)
|
||||
|
||||
IF FILE( FORCEEXT( toFoxBin2Prg.c_Foxbin2prg_FullPath, 'ICO' ) ) THEN
|
||||
THIS.Icon = FORCEEXT( toFoxBin2Prg.c_Foxbin2prg_FullPath, 'ICO' )
|
||||
ENDIF
|
||||
@@ -4367,9 +4529,9 @@ ENDDEFINE
|
||||
|
||||
|
||||
|
||||
DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
DEFINE CLASS c_conversor_base AS Session
|
||||
#IF .F.
|
||||
LOCAL THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
LOCAL THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
#ENDIF
|
||||
_MEMBERDATA = [<VFPData>] ;
|
||||
+ [<memberdata name="analizarasignacion_tag_indicado" display="analizarAsignacion_TAG_Indicado"/>] ;
|
||||
@@ -4545,7 +4707,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
llBloqueEncontrado = .T.
|
||||
LOCAL lcLine, lnArrayCols
|
||||
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
|
||||
*-- Propiedad especial
|
||||
IF tcTAG_F $ tcValue && El fin de tag est<73> "inline"
|
||||
@@ -4819,7 +4981,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
LPARAMETERS tcAsignacion
|
||||
LOCAL lcPropName, lcValor, lnCodError, lcExpNormalizada, lnPos, lcComentario
|
||||
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
.get_SeparatedPropAndValue( @tcAsignacion, @lcPropName, @lcValor )
|
||||
lcComentario = ''
|
||||
.desnormalizarValorPropiedad( @lcPropName, @lcValor, @lcComentario )
|
||||
@@ -4993,7 +5155,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
LOCAL lcTimeStamp,lnYear,lnMonth,lnDay,lnHour,lnMinutes,lnSeconds,lcTime,lnHour,ltTimeStamp,lnResto ;
|
||||
,lcTimeStamp_Ret, laDirInfo[1,5], loEx AS EXCEPTION
|
||||
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
lcTimeStamp_Ret = ''
|
||||
|
||||
IF EMPTY(tnTimeStamp)
|
||||
@@ -5167,7 +5329,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
|
||||
IF PCOUNT() > 3
|
||||
*-- EVALUAR UNA ASIGNACI<43>N QUE PUEDE SER MULTIL<49>NEA (memberdata, fb2p_value, etc)
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
DO CASE
|
||||
CASE .analizarAsignacion_TAG_Indicado( @tcPropName, @tcValue, @taCodeLines, tnCodeLines, @I ;
|
||||
, C_FB2P_VALUE_I, C_FB2P_VALUE_F, C_LEN_FB2P_VALUE_I, C_LEN_FB2P_VALUE_F )
|
||||
@@ -5248,7 +5410,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
ENDIF
|
||||
|
||||
*-- B<>squeda del ID de inicio de bloque
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
FOR I = 1 TO tnCodeLines
|
||||
* Reduzco los espacios. Ej: '#IF .F. && cmt' ==> '#IF .F.&&cmt'
|
||||
*lcLine = LTRIM( STRTRAN( STRTRAN( CHRTRAN( taCodeLines(I), CHR(9), ' ' ), ' ', ' ' ), ' ', ' ' ) )
|
||||
@@ -5360,7 +5522,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
LPARAMETERS tcLine, tcComment
|
||||
LOCAL lllineIsOnlyCommentAndNoMetadata, ln_AT_Cmt
|
||||
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
.get_SeparatedLineAndComment( @tcLine, @tcComment )
|
||||
|
||||
DO CASE
|
||||
@@ -5383,7 +5545,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
LPARAMETERS tcAsignacion, tcComentario
|
||||
LOCAL lcPropName, lcValor, lnCodError, lcExpNormalizada, lnPos
|
||||
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
.get_SeparatedPropAndValue( @tcAsignacion, @lcPropName, @lcValor )
|
||||
tcComentario = ''
|
||||
.normalizarValorPropiedad( @lcPropName, @lcValor, @tcComentario )
|
||||
@@ -5705,7 +5867,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
DIMENSION laPropsAndValues( tnPropsAndValues_Count, lnArrayCols )
|
||||
ACOPY( taPropsAndValues, laPropsAndValues )
|
||||
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
IF m.tnSortType >= 1
|
||||
* CON SORT:
|
||||
* - A las que no tienen '.' les pongo 'A' por delante, y al resto 'B' por delante para que queden al final
|
||||
@@ -6047,7 +6209,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION
|
||||
LPARAMETERS tcText, tnTimeStamp
|
||||
|
||||
TRY
|
||||
WITH THIS AS C_CONVERSOR_BASE OF 'FOXBIN2PRG.PRG'
|
||||
WITH THIS AS c_conversor_base OF 'FOXBIN2PRG.PRG'
|
||||
*-- Seg<65>n el valor de nTimestamp:
|
||||
*-- 0 = Sin timestamp
|
||||
*-- 1 = Timestamp por delante
|
||||
@@ -6081,7 +6243,7 @@ ENDDEFINE
|
||||
|
||||
|
||||
|
||||
DEFINE CLASS c_conversor_prg_a_bin AS C_CONVERSOR_BASE
|
||||
DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
|
||||
#IF .F.
|
||||
LOCAL THIS AS c_conversor_prg_a_bin OF 'FOXBIN2PRG.PRG'
|
||||
#ENDIF
|
||||
@@ -11390,7 +11552,7 @@ ENDDEFINE && CLASS c_conversor_prg_a_mnx AS c_conversor_prg_a_bin
|
||||
|
||||
|
||||
|
||||
DEFINE CLASS c_conversor_bin_a_prg AS C_CONVERSOR_BASE
|
||||
DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
|
||||
#IF .F.
|
||||
LOCAL THIS AS c_conversor_bin_a_prg OF 'FOXBIN2PRG.PRG'
|
||||
#ENDIF
|
||||
@@ -24121,7 +24283,7 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
|
||||
ENDDEFINE
|
||||
|
||||
|
||||
DEFINE CLASS CL_DBF_UTILS AS SESSION
|
||||
DEFINE CLASS CL_DBF_UTILS AS Session
|
||||
_MEMBERDATA = [<VFPData>] ;
|
||||
+ [<memberdata name="fields" display="Fields"/>] ;
|
||||
+ [<memberdata name="c_backlink_dbc_name" display="c_Backlink_DBC_Name"/>] ;
|
||||
@@ -24915,6 +25077,7 @@ DEFINE CLASS CL_LANG AS Custom
|
||||
C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = ""
|
||||
C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = ""
|
||||
C_UNKNOWN_CLASS_NAME_LOC = ""
|
||||
C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = ""
|
||||
C_USING_THIS_SETTINGS_LOC = ""
|
||||
C_WARNING_LOC = ""
|
||||
C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = ""
|
||||
@@ -25028,6 +25191,7 @@ DEFINE CLASS CL_LANG AS Custom
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Nesting erreur de structure. ENDPROC pr<70>vu, mais a trouv<75> ENDDEFINE sur la classe <<toClase._Nombre>> (<<loProcedure._Nombre>>), ligne <<TRANSFORM(I)>> du fichier <<THIS.c_InputFile>>"
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Nesting erreur de structure. ENDPROC attendue, mais ENDDEFINE sur la classe <<toClase._Nombre>> (<<toObjeto._Nombre>>.<<loProcedure._Nombre>>), ligne <<TRANSFORM(I)>> du fichier <<THIS.c_InputFile>>"
|
||||
.C_UNKNOWN_CLASS_NAME_LOC = "Classe inconnue[<<THIS.CLASS>>]"
|
||||
.C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Utilisez le fichier Optimisation d'horodatage"
|
||||
.C_USING_THIS_SETTINGS_LOC = "Utilisation de ce param<61>tre"
|
||||
.C_WARNING_LOC = "AVERTISSEMENT!"
|
||||
.C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "AVERTISSEMENT!" + CR_LF+ "ASSUREZ VOUS NE UTILISEZ PAS UN ALIAS DE TABLE SUR LES EXPRESSIONS INDEX CL<43>S!! (exemple: index on <<UPPER(JUSTSTEM(THIS.c_InputFile))>>.campo tag keyname)"
|
||||
@@ -25119,6 +25283,7 @@ DEFINE CLASS CL_LANG AS Custom
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Error de anidamiento de estructuras. Se esperaba ENDPROC pero se encontr<74> ENDDEFINE en la clase <<toClase._Nombre>> (<<loProcedure._Nombre>>), l<>nea <<TRANSFORM(I)>> del archivo <<THIS.c_InputFile>>"
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Error de anidamiento de estructuras. Se esperaba ENDPROC pero se encontr<74> ENDDEFINE en la clase <<toClase._Nombre>> (<<toObjeto._Nombre>>.<<loProcedure._Nombre>>), l<>nea <<TRANSFORM(I)>> del archivo <<THIS.c_InputFile>>"
|
||||
.C_UNKNOWN_CLASS_NAME_LOC = "Clase [<<THIS.CLASS>>] desconocida"
|
||||
.C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Usar Optimizaci<63>n de filestamp de archivo"
|
||||
.C_USING_THIS_SETTINGS_LOC = "Usando esta configuraci<63>n"
|
||||
.C_WARNING_LOC = "<22>ATENCI<43>N!"
|
||||
.C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "<22>ATENCI<43>N!" + CR_LF+ "ASEG<45>RESE DE QUE NO EST<53> USANDO UN ALIAS DE TABLA EN LAS EXPRESIONES DE LOS <20>NDICES!! (ej: index on <<UPPER(JUSTSTEM(THIS.c_InputFile))>>.campo tag nombreclave)"
|
||||
@@ -25210,6 +25375,7 @@ DEFINE CLASS CL_LANG AS Custom
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC erwartet, aber es wurde ENDDEFINE in Klasse <<toClase._Nombre>> (<<loProcedure._Nombre>>), Zeile <<TRANSFORM(I)>> der Datei <<THIS.c_InputFile>> gefunden"
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Fehler in Verschachtelungsstruktur. ENDPROC wurde erwartet, aber es wurde ENDDEFINE in Klasse <<toClase._Nombre>> (<<toObjeto._Nombre>>.<<loProcedure._Nombre>>), Zeile <<TRANSFORM(I)>> der Datei <<THIS.c_InputFile>> gefunden"
|
||||
.C_UNKNOWN_CLASS_NAME_LOC = "Unbekannte Klasse [<<THIS.CLASS>>]"
|
||||
.C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Verwenden Sie Datei-Zeitstempel-Optimierung"
|
||||
.C_USING_THIS_SETTINGS_LOC = "Mit dieser einstellung"
|
||||
.C_WARNING_LOC = "WARNUNG!"
|
||||
.C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNUNG!" + CR_LF+ "STELLEN SIE SICHER, DAS KEIN TABELLENALIAS IM INDEXAUSDRUCK BENUTZT WIRD!! (z.B.: index on <<UPPER(JUSTSTEM(THIS.c_InputFile))>>.campo tag keyname)"
|
||||
@@ -25301,6 +25467,7 @@ DEFINE CLASS CL_LANG AS Custom
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC = "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <<toClase._Nombre>> (<<loProcedure._Nombre>>), line <<TRANSFORM(I)>> of file <<THIS.c_InputFile>>"
|
||||
.C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC = "Nesting structure error. ENDPROC expected but found ENDDEFINE on class <<toClase._Nombre>> (<<toObjeto._Nombre>>.<<loProcedure._Nombre>>), line <<TRANSFORM(I)>> of file <<THIS.c_InputFile>>"
|
||||
.C_UNKNOWN_CLASS_NAME_LOC = "Unknown class [<<THIS.CLASS>>]"
|
||||
.C_USE_FILE_TIMESTAMP_OPTIMIZATION_LOC = "Use file timestamp Optimization"
|
||||
.C_USING_THIS_SETTINGS_LOC = "Using this settings"
|
||||
.C_WARNING_LOC = "WARNING!"
|
||||
.C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC = "WARNING!" + CR_LF+ "MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on <<UPPER(JUSTSTEM(THIS.c_InputFile))>>.campo tag keyname)"
|
||||
|
||||
Reference in New Issue
Block a user