Changeset: 16 Changeset: 16 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin parámetros, verificación y logueo de archivos READONLY con debug activa

This commit is contained in:
fernando
2013-12-03 00:50:51 +01:00
parent d6a12c4eb9
commit b4226089e3

View File

@@ -3,10 +3,13 @@
* Autor..........: Fernando D. Bozzo (mailto:fdbozzo@gmail.com)
* Fecha creaci<63>n.: 04/11/2013
*
* LICENCIA: Reconocimiento <20> CompartirIgual (by-sa):
* Se permite el uso comercial de la obra y de las posibles obras derivadas, la distribuci<63>n de las cuales
* se debe hacer con una licencia igual a la que regula la obra original.
* (http://es.creativecommons.org/blog/licencias/)
* LICENCIA:
* Esta obra est<73> sujeta a la licencia Reconocimiento-CompartirIgual 4.0 Internacional de Creative Commons.
* Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-sa/4.0/deed.es_ES.
*
* LICENCE:
* This work is licensed under the Creative Commons Attribution 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/.
*
*---------------------------------------------------------------------------------------------------
* DESCRIPCI<43>N....: CONVIERTE EL ARCHIVO VCX/SCX/PJX INDICADO A UN "PRG H<>BRIDO" PARA POSTERIOR RECONVERSI<53>N.
@@ -41,7 +44,7 @@
* 27/11/2013 FDBOZZO v1.4 Agregado soporte comodines *.VCX, configuraci<63>n de extensiones (vca), par<61>metro p/log
* 27/11/2013 FDBOZZO v1.5 Arreglo bug que no generaba form completo
* 01/12/2013 FDBOZZO v1.6 Refactorizaci<63>n completa generaci<63>n BIN y PRG, cambio de algoritmos, arreglo de bugs, Unit Testing con FoxUnit
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa
* 02/12/2013 FDBOZZO v1.7 Arreglo bug "Name", barra de progreso, agregado mensaje de ayuda si se llama sin par<61>metros, verificaci<63>n y logueo de archivos READONLY con debug activa
*
*---------------------------------------------------------------------------------------------------
* TESTEO Y REPORTE DE BUGS (AGRADECIMIENTOS)
@@ -63,10 +66,11 @@
* tlGenText_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG
* tcDontShowErrors (v? IN ) '1' para NO mostrar errores con MESSAGEBOX
* tcDebug (v? IN ) '1' para depurar en el sitio donde ocurre el error (solo modo desarrollo)
* tcDontShowProgress (v? IN ) '1' para NO mostrar la ventana de progreso
*
* Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX"
*---------------------------------------------------------------------------------------------------
LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug
LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress
*-- Internacionalizaci<63>n / Internationalization
*-- Fin / End
@@ -150,103 +154,136 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro
#DEFINE SERVERINSTANCE_MULTIUSE 3 && Multi-use server
*-- Fin / End
LOCAL lcSys16, I, lcPath, lnResp, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt, llExisteConfig ;
, loCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
lnResp = 0
TRY
LOCAL lcSys16, I, lcPath, lnResp, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ;
, llExisteConfig, llShowProgress, lcConfData, lnFileCount ;
, loEx as Exception
SET DELETED ON
SET DATE YMD
SET HOURS TO 24
SET CENTURY ON
SET SAFETY OFF
SET TABLEPROMPT OFF
PUBLIC goFrm_Avance AS frm_avance OF 'FOXBIN2PRG.PRG' ;
, goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
lnResp = 0
IF _VFP.STARTMODE > 0
SET ESCAPE OFF
ENDIF
SET DELETED ON
SET DATE YMD
SET HOURS TO 24
SET CENTURY ON
SET SAFETY OFF
SET TABLEPROMPT OFF
IF EMPTY(tc_InputFile)
lnResp = 1
MESSAGEBOX( 'FOXBIN2PRG <cFileSpec.Ext> [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug]' + CR_LF + CR_LF ;
+ 'Ejemplo para generar los TXT de todos los VCX de c:\desa\clases, sin mostrar ventana de error y generando LOG: ' + CR_LF ;
+ ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ;
+ 'Ejemplo para generar los VCX de todos los TXT de c:\desa\clases, sin mostrar ventana de error y sin LOG: ' + CR_LF ;
+ ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"' ;
, 0+64+4096, 'FOXBIN2PRG: SINTAXIS INFO', 60000 )
ELSE
lcSys16 = SYS(16)
lcPath = SET("Path")
*SET PATH TO (JUSTPATH(lcSys16))
SET PATH TO
loCnv = CREATEOBJECT("c_foxbin2prg")
loCnv.l_Debug = (TRANSFORM(tcDebug)=='1')
loCnv.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1')
*-- Configuraci<63>n
lcConfigFile = FORCEEXT( lcSys16, 'CFG' )
llExisteConfig = FILE( lcConfigFile )
IF llExisteConfig
FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 )
lcExt = 'c_' + ALLTRIM( GETWORDNUM( laConfig(I), 1, '=' ) )
IF PEMSTATUS( loCnv, lcExt, 5 )
loCnv.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( laConfig(I), 2, '=' ) ) ) )
ENDIF
ENDFOR
IF _VFP.STARTMODE > 0
SET ESCAPE OFF
ENDIF
IF EMPTY(tc_InputFile)
lnResp = 1
MESSAGEBOX( 'FOXBIN2PRG <cFileSpec.Ext> [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug]' + CR_LF + CR_LF ;
+ 'Ejemplo para generar los TXT de todos los VCX de c:\desa\clases, sin mostrar ventana de error y generando LOG: ' + CR_LF ;
+ ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ;
+ 'Ejemplo para generar los VCX de todos los TXT de c:\desa\clases, sin mostrar ventana de error y sin LOG: ' + CR_LF ;
+ ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"' ;
, 0+64+4096, 'FOXBIN2PRG: SINTAXIS INFO', 60000 )
ELSE
lcSys16 = SYS(16)
lcPath = SET("Path")
*SET PATH TO (JUSTPATH(lcSys16))
SET PATH TO
llShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1')
goCnv = CREATEOBJECT("c_foxbin2prg")
goCnv.l_Debug = (TRANSFORM(tcDebug)=='1')
goCnv.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1')
*-- Evaluaci<63>n de FileSpec de entrada
DO CASE
CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile )
MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).' ;
, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 10000 )
CASE '*' $ JUSTSTEM( tc_InputFile )
*-- Se quieren todos los archivos de una extensi<73>n
lcFileSpec = FULLPATH( tc_InputFile )
CD (JUSTPATH(lcFileSpec))
loCnv.c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG'
IF loCnv.l_Debug
IF FILE( loCnv.c_LogFile )
ERASE ( loCnv.c_LogFile )
ENDIF
loCnv.writeLog( lcSys16 + ' - FileSpec: ' + EVL(tc_InputFile,'') )
IF llExisteConfig
loCnv.writeLog( 'ConfigFile: ' + lcConfigFile )
ENDIF
IF llShowProgress
goFrm_Avance = CREATEOBJECT("frm_avance")
ENDIF
FOR I = 1 TO ADIR( laFiles, lcFileSpec )
lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) )
*-- Configuraci<63>n
lcConfigFile = FORCEEXT( lcSys16, 'CFG' )
llExisteConfig = FILE( lcConfigFile )
IF FILE( lcFile )
lnResp = loCnv.Convertir( lcFile )
ENDIF
ENDFOR
OTHERWISE
*-- Un archivo individual
IF FILE(tc_InputFile)
CD (JUSTPATH(tc_InputFile))
loCnv.c_LogFile = tc_InputFile + '.LOG'
IF loCnv.l_Debug
IF FILE( loCnv.c_LogFile )
ERASE ( loCnv.c_LogFile )
IF llExisteConfig
FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 )
IF LOWER( LEFT( laConfig(I), 10 ) ) == 'extension:'
lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) )
lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) )
IF PEMSTATUS( goCnv, lcExt, 5 )
goCnv.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) )
ENDIF
ENDIF
ENDFOR
ENDIF
*-- Evaluaci<63>n de FileSpec de entrada
DO CASE
CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile )
MESSAGEBOX( 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).' ;
, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 10000 )
CASE '*' $ JUSTSTEM( tc_InputFile )
*-- Se quieren todos los archivos de una extensi<73>n
lcFileSpec = FULLPATH( tc_InputFile )
CD (JUSTPATH(lcFileSpec))
goCnv.c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG'
IF goCnv.l_Debug
IF FILE( goCnv.c_LogFile )
ERASE ( goCnv.c_LogFile )
ENDIF
goCnv.writeLog( lcSys16 + ' - FileSpec: ' + EVL(tc_InputFile,'') )
IF llExisteConfig
goCnv.writeLog( 'ConfigFile: ' + lcConfigFile )
ENDIF
loCnv.writeLog( lcSys16 + ' - FileSpec: ' + EVL(tc_InputFile,'') )
ENDIF
lnResp = loCnv.Convertir( tc_InputFile )
ENDIF
ENDCASE
lnFileCount = ADIR( laFiles, lcFileSpec )
CD (JUSTPATH(lcSys16))
SET PATH TO (lcPath)
ENDIF
IF llShowProgress
goFrm_Avance.nMAX_VALUE = lnFileCount
ENDIF
FOR I = 1 TO lnFileCount
lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) )
goFrm_Avance.lbl_TAREA.Caption = 'Procesando archivo ' + lcFile + '...'
goFrm_Avance.nVALUE = I
IF llShowProgress
goFrm_Avance.Show()
ENDIF
IF FILE( lcFile )
lnResp = goCnv.Convertir( lcFile )
ENDIF
ENDFOR
OTHERWISE
*-- Un archivo individual
IF FILE(tc_InputFile)
CD (JUSTPATH(tc_InputFile))
goCnv.c_LogFile = tc_InputFile + '.LOG'
IF goCnv.l_Debug
IF FILE( goCnv.c_LogFile )
ERASE ( goCnv.c_LogFile )
ENDIF
goCnv.writeLog( lcSys16 + ' - FileSpec: ' + EVL(tc_InputFile,'') )
ENDIF
lnResp = goCnv.Convertir( tc_InputFile )
ENDIF
ENDCASE
CD (JUSTPATH(lcSys16))
SET PATH TO (lcPath)
ENDIF
CATCH TO loEx
FINALLY
goFrm_Avance.Hide()
goFrm_Avance.Release()
STORE NULL TO goCnv, goFrm_Avance
RELEASE goCnv, goFrm_Avance
ENDTRY
IF _VFP.STARTMODE > 0
QUIT
@@ -435,6 +472,70 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS frm_avance AS form
Height = 79
Width = 628
ShowWindow = 2
DoCreate = .T.
AutoCenter = .T.
BorderStyle = 2
Caption = "Avance del proceso"
ControlBox = .F.
BackColor = RGB(255,255,255)
nmax_value = 100
nvalue = 0
Name = "FRM_AVANCE"
ADD OBJECT shp_base AS shape WITH ;
Top = 40, ;
Left = 12, ;
Height = 21, ;
Width = 601, ;
Curvature = 15, ;
Name = "shp_base"
ADD OBJECT shp_avance AS shape WITH ;
Top = 40, ;
Left = 12, ;
Height = 21, ;
Width = 36, ;
Curvature = 15, ;
BackColor = RGB(255,255,128), ;
BorderColor = RGB(255,0,0), ;
Name = "shp_Avance"
ADD OBJECT lbl_tarea AS label WITH ;
BackStyle = 0, ;
Caption = ".", ;
Height = 17, ;
Left = 12, ;
Top = 20, ;
Width = 604, ;
Name = "lbl_Tarea"
PROCEDURE nvalue_assign
LPARAMETERS vNewVal
WITH THIS
.nvalue = m.vNewVal
.shp_Avance.Width = m.vNewVal * .shp_base.Width / .nMax_Value
ENDWITH
ENDPROC
PROCEDURE Init
THIS.nvalue = 0
ENDPROC
ENDDEFINE
*******************************************************************************************************************
DEFINE CLASS c_conversor_base AS SESSION
#IF .F.