Changeset: 145 Estructuración en archivo .h y localización de los textos en Inglés

This commit is contained in:
fernando
2014-01-26 14:59:54 +01:00
parent 322d66c3c5
commit 920c5c9239
5 changed files with 168 additions and 132 deletions

View File

@@ -1,4 +1,4 @@
06/01/2014 FOXBIN2PRG VER.1.18 FOR VISUAL FOXPRO 9 BINARIES Fernando D. Bozzo (fdbozzo@gmail.com) 26/01/2014 FOXBIN2PRG v1.19 FOR VISUAL FOXPRO 9 BINARIES Fernando D. Bozzo (fdbozzo@gmail.com)
ESPAÑOL -------------------------------------------------------------------------------------------- ESPAÑOL --------------------------------------------------------------------------------------------
@@ -33,6 +33,12 @@ TRUCO UTIL:
Se puede crear un acceso directo en la carpeta "SendTo" del perfil del usuario, para poder "enviar" Se puede crear un acceso directo en la carpeta "SendTo" del perfil del usuario, para poder "enviar"
el archivo elegido (pjx,pj2,etc) a Foxbin2prg.exe, y así se hacen conversiones al vuelo. el archivo elegido (pjx,pj2,etc) a Foxbin2prg.exe, y así se hacen conversiones al vuelo.
LOCALIZACIÓN:
Si se crea un archivo [foxbin2prg.h], se pueden trasladar los textos a otros idiomas. Se adjunta
un archivo de ejemplo [foxbin2prg_en.h] con la traslación al inglés.
Es necesario recompilar el programa para que se actualicen los textos con el archivo include.
NOTA FINAL: NOTA FINAL:
Este programa es Open Source y "libre", y como tal no ofrezco garantías de que cumpla con sus espectativas Este programa es Open Source y "libre", y como tal no ofrezco garantías de que cumpla con sus espectativas
o de que está libre de fallos, que intentaré solucionar si me reporta y mis obligaciones me lo permiten. o de que está libre de fallos, que intentaré solucionar si me reporta y mis obligaciones me lo permiten.
@@ -77,6 +83,11 @@ USEFUL TRICK:
You can create a shortcut in the "SendTo" folder on your user Windows Profile, so you can "send" You can create a shortcut in the "SendTo" folder on your user Windows Profile, so you can "send"
the selected file (pjx,pj2,etc) to Foxbin2prg.exe, and make on-the-fly conversions. the selected file (pjx,pj2,etc) to Foxbin2prg.exe, and make on-the-fly conversions.
LOCALIZATION:
If file [foxbin2prg.h] is created, texts to other languages can be translated. En example
file [foxbin2prg_en.h] is attached with english translation.
Recompiling is necesary to update the strings from the include file.
FINAL NOTE: FINAL NOTE:
This program is Open Source and "libre", and I don't make any garanties that it fulfills your espectations This program is Open Source and "libre", and I don't make any garanties that it fulfills your espectations

View File

@@ -26,7 +26,7 @@ _LegalTrademark = "Open Source"
_ProductName = " FOXBIN2PRG" _ProductName = " FOXBIN2PRG"
_MajorVer = "1" _MajorVer = "1"
_MinorVer = "19" _MinorVer = "19"
_Revision = " 209" _Revision = " 210"
_LanguageID = "1034" _LanguageID = "1034"
_AutoIncrement = "1" _AutoIncrement = "1"
*</DevInfo> *</DevInfo>
@@ -51,7 +51,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx')
WITH loProject.FILES WITH loProject.FILES
.ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" />
.ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144485039" ID="1130644423" ObjRev="544" /> .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144682071" ID="1130644423" ObjRev="544" />
*</BuildProj> *</BuildProj>
.ITEM('__newproject.f2b').Remove() .ITEM('__newproject.f2b').Remove()

Binary file not shown.

Binary file not shown.

View File

@@ -257,49 +257,58 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro
******************************************************************************************************************* *******************************************************************************************************************
*-- INTERNACIONALIZACI<43>N / INTERNATIONALIZATION *-- INTERNACIONALIZACI<43>N / INTERNATIONALIZATION
******************************************************************************************************************* *******************************************************************************************************************
#IF .T. &&VERSION(3) == "34" && Espa<70>ol (Spanish) [NO FUNCIONA M<>S ESTO :( ] #IF FILE('foxbin2prg.h')
#DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC '<27>FOXBIN2PRG es solo para Visual FoxPro 9.0!' #INCLUDE FOXBIN2PRG.H
#DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: <20>ATENCI<43>N!' #ELSE
#DEFINE FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG <cEspecArchivo.Ext> [cType_ND cTextName_ND cGenText_ND cNoMostrarErrores cDebug]' + CR_LF + CR_LF ; *---------------------------------------------------------------------------------------------------------
*-- TRANSLACI<43>N AL ESPA<50>OL
*---------------------------------------------------------------------------------------------------------
#DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).'
#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC 'No se pudo actualizar el backlink'
#DEFINE C_BACKLINK_OF_TABLE_LOC 'de la tabla'
#DEFINE C_BACKUP_OF_LOC 'Backup de: '
#DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC 'No se puede generar el archivo [<<THIS.c_OutputFile>>] porque es ReadOnly'
#DEFINE C_CONFIGFILE_LOC 'Archivo de configuraci<63>n:'
#DEFINE C_CONVERTER_UNLOAD_LOC 'Descarga del conversor'
#DEFINE C_CONVERTING_FILE_LOC 'Convirtiendo archivo'
#DEFINE C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC 'Error de datos: No se puede parsear porque las comillas no son pares en la l<>nea <<lcMetadatos>>'
#DEFINE C_DUPLICATED_FILE_LOC 'Archivo duplicado'
#DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC 'No se ha encontrado el marcador de fin [ENDDEFINE] de la l<>nea <<TRANSFORM( toClase._Inicio )>> para el identificador [<<toClase._Nombre>>]'
#DEFINE C_END_MARKER_NOT_FOUND_LOC 'No se ha encontrado el marcador de fin [<<ta_ID_Bloques(lnPrimerID,2)>>] que cierra al marcador de inicio [<<ta_ID_Bloques(lnPrimerID,1)>>] de la l<>nea <<TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1))>>'
#DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC 'No se encontr<74> el campo [<<laProps(I)>>] en la estructura del archivo <<DBF("TABLABIN")>>'
#DEFINE C_FILE_DOESNT_EXIST_LOC 'El archivo no existe:'
#DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC 'El archivo [<<.c_InputFile>>] no est<73> soportado'
#DEFINE C_FILE_NOT_FOUND_LOC 'No se encontr<74> el archivo'
#DEFINE C_FOXBIN2PRG_CFG_EXTENSION_LOC 'extension:'
#DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC 'FOXBIN2PRG: ERROR!!'
#DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG: INFORMACI<43>N DE SINTAXIS'
#DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC 'FOXBIN2PRG <cEspecArchivo.Ext> [cType_ND cTextName_ND cGenText_ND cNoMostrarErrores 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 archivo LOG: ' + CR_LF ; + 'Ejemplo para generar los TXT de todos los VCX de "c:\desa\clases", sin mostrar ventana de error y generando archivo LOG: ' + CR_LF ;
+ ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + 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 ; + '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"' + ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"'
#DEFINE ASTERISK_EXT_NOT_ALLOWED_LOC 'No se admiten extensiones * o ? porque es peligroso (se pueden pisar binarios con archivo xx2 vac<61>os).' #DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC '<27>FOXBIN2PRG es solo para Visual FoxPro 9.0!'
#DEFINE C_PROCESSING_LOC 'Procesando archivo ' #DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: <20>ATENCI<43>N!'
#DEFINE C_FILE_DOESNT_EXIST_LOC "El archivo no existe:" #DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC 'El Men<EFBFBD> [<<THIS.c_InputFile>>] NO est<73> en formato VFP 9! - Por favor convertirlo a VFP 9 con MODIFY MENU <<JUSTFNAME((THIS.c_InputFile))>>'
#DEFINE C_SOURCEFILE_LOC "Archivo origen: " #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC '* Se ha encontrado el programa de capitalizaci<63>n de nombres [<<lcEXE_CAPS>>]'
#DEFINE C_PROCESS_PROGRESS_LOC "Avance del proceso: " #DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC '* No se ha encontrado el programa de capitalizaci<63>n de nombres [<<lcEXE_CAPS>>]'
#DEFINE C_CONVERTER_UNLOAD_LOC "Descarga del conversor" #DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC 'Objeto [<<toObj.CLASS>>] no contiene el objeto oReg (nivel <<TRANSFORM(tnNivel)>>)'
#DEFINE C_CONVERTING_FILE_LOC "Convirtiendo archivo " #DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC 'Operaci<63>n no reconocida. Solo re reconoce SETNAME y GETNAME.'
#DEFINE C_BACKUP_OF_LOC "Backup de: " #DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC 'Optimizaci<63>n: El archivo de salida [<<THIS.c_OutputFile>>] no se sobreescribe por ser igual al generado.'
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC 'Operaci<63>n no reconocida. Solo re reconoce SETNAME y GETNAME.' #DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC 'Procedimiento sin cerrar. La <20>ltima l<>nea de c<>digo debe ser ENDPROC. [<<laLineas(1)>>]'
#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC 'No se pudo actualizar el backlink' #DEFINE C_PROCESSING_LOC 'Procesando archivo'
#DEFINE C_BACKLINK_OF_TABLE_LOC 'de la tabla' #DEFINE C_PROCESS_PROGRESS_LOC 'Avance del proceso:'
#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC 'Propiedad [<<TRANSFORM(tnPropertyID)>>] no reconocida.'
#ELSE && English #DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC '- Solicitado capitalizar el archivo [<<tcFileName>>]'
#DEFINE C_FOXBIN2PRG_JUST_VFP_9_LOC 'FOXBIN2PRG is only for Visual FoxPro 9.0!' #DEFINE C_SOURCEFILE_LOC 'Archivo origen: '
#DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: WARNING!' #DEFINE 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>>'
#DEFINE FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG <cFileSpec.Ext> [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug cDontShowProgress cOriginalFileName cRecompile]' + CR_LF + CR_LF ; #DEFINE 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>>'
+ 'Example to generate TXT of all VCX of "c:\desa\clases", without showing error window and generating LOG file: ' + CR_LF ; #DEFINE C_UNKNOWN_CLASS_NAME_LOC 'Clase [<<THIS.CLASS>>] desconocida'
+ ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ; #DEFINE C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC '<27><>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)'
+ 'Example to generate TXT of all VCX of "c:\desa\clases", without showing error window and without LOG file: ' + CR_LF ;
+ ' FOXBIN2PRG "c:\desa\clases\*.vc2" "0" "0" "0" "1" "0"'
#DEFINE ASTERISK_EXT_NOT_ALLOWED_LOC '* and ? extensions are not allowed because is dangerous (binaries can be overwriten with xx2 empty files)'
#DEFINE C_PROCESSING_LOC 'Processing file '
#DEFINE C_FILE_DOESNT_EXIST_LOC "File doesn't exist:"
#DEFINE C_SOURCEFILE_LOC "Source file: "
#DEFINE C_PROCESS_PROGRESS_LOC "Process Progress: "
#DEFINE C_CONVERTER_UNLOAD_LOC "Converter unload"
#DEFINE C_CONVERTING_FILE_LOC "Converting file "
#DEFINE C_BACKUP_OF_LOC "Backup of: "
#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC 'Operation not recognized. Only SETNAME and GETNAME allowed.'
#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC 'Could not update backlink'
#DEFINE C_BACKLINK_OF_TABLE_LOC 'of table'
#ENDIF #ENDIF
******************************************************************************************************************* *******************************************************************************************************************
PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
LOCAL lnResp LOCAL lnResp
goCnv = CREATEOBJECT("c_foxbin2prg") goCnv = CREATEOBJECT("c_foxbin2prg")
@@ -384,8 +393,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
l_Debug = .F. l_Debug = .F.
l_Test = .F. l_Test = .F.
l_ShowErrors = .F. l_ShowErrors = .F.
l_ShowProgress = .T. l_ShowProgress = .F.
l_Recompile = .T. l_Recompile = .F.
l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_MethodSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_PropSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias l_ReportSort_Enabled = .T. && Para Unit Testing se puede cambiar a .F. para buscar diferencias
@@ -605,7 +614,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
CASE EMPTY(tc_InputFile) CASE EMPTY(tc_InputFile)
*-- (Ejemplo de sintaxis y uso) *-- (Ejemplo de sintaxis y uso)
MESSAGEBOX( FOXBIN2PRG_INFO_SINTAX_LOC, 0+64+4096, 'FOXBIN2PRG: SINTAXIS INFO', 60000 ) MESSAGEBOX( C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC, 0+64+4096, C_FOXBIN2PRG_INFO_SINTAX_LOC, 60000 )
lnCodError = 1 lnCodError = 1
OTHERWISE OTHERWISE
@@ -625,7 +634,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
IF llExisteConfig IF llExisteConfig
FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 )
IF LOWER( LEFT( laConfig(I), 10 ) ) == 'extension:' IF LOWER( LEFT( laConfig(I), 10 ) ) == C_FOXBIN2PRG_CFG_EXTENSION_LOC && 'extension:'
lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) )
lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) )
IF PEMSTATUS( THIS, lcExt, 5 ) IF PEMSTATUS( THIS, lcExt, 5 )
@@ -640,9 +649,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
DO CASE DO CASE
CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile )
IF THIS.l_ShowErrors IF THIS.l_ShowErrors
MESSAGEBOX( ASTERISK_EXT_NOT_ALLOWED_LOC, 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( C_ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 )
ELSE ELSE
ERROR ASTERISK_EXT_NOT_ALLOWED_LOC ERROR C_ASTERISK_EXT_NOT_ALLOWED_LOC
ENDIF ENDIF
CASE '*' $ JUSTSTEM( tc_InputFile ) CASE '*' $ JUSTSTEM( tc_InputFile )
@@ -662,7 +672,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
ENDIF ENDIF
THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') )
IF llExisteConfig IF llExisteConfig
THIS.writeLog( 'ConfigFile: ' + lcConfigFile ) *THIS.writeLog( 'ConfigFile:' + ' ' + lcConfigFile )
THIS.writeLog( C_CONFIGFILE_LOC + ' ' + lcConfigFile )
ENDIF ENDIF
ENDIF ENDIF
@@ -674,7 +685,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
FOR I = 1 TO lnFileCount FOR I = 1 TO lnFileCount
lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) ) lcFile = FORCEPATH( laFiles(I,1), JUSTPATH( lcFileSpec ) )
THIS.o_Frm_Avance.lbl_TAREA.CAPTION = C_PROCESSING_LOC + lcFile + '...' THIS.o_Frm_Avance.lbl_TAREA.CAPTION = C_PROCESSING_LOC + ' ' + lcFile + '...'
THIS.o_Frm_Avance.nVALUE = I THIS.o_Frm_Avance.nVALUE = I
IF THIS.l_ShowProgress IF THIS.l_ShowProgress
@@ -759,7 +770,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
.c_InputFile = FULLPATH( tc_InputFile ) .c_InputFile = FULLPATH( tc_InputFile )
IF ADIR( laDirFile, .c_InputFile, '', 1 ) = 0 IF ADIR( laDirFile, .c_InputFile, '', 1 ) = 0
ERROR 'No se encontr<74> el archivo [' + .c_InputFile + ']' *ERROR 'No se encontr<74> el archivo [' + .c_InputFile + ']'
ERROR C_FILE_NOT_FOUND_LOC + ' [' + .c_InputFile + ']'
ENDIF ENDIF
.c_InputFile = loFSO.GetAbsolutePathName( FORCEPATH( laDirFile(1,1), JUSTPATH(.c_InputFile) ) ) .c_InputFile = loFSO.GetAbsolutePathName( FORCEPATH( laDirFile(1,1), JUSTPATH(.c_InputFile) ) )
@@ -860,7 +872,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' )
OTHERWISE OTHERWISE
ERROR 'El archivo [' + .c_InputFile + '] no est<73> soportado' *ERROR 'El archivo [' + .c_InputFile + '] no est<73> soportado'
ERROR (TEXTMERGE(C_FILE_NAME_IS_NOT_SUPPORTED_LOC))
ENDCASE ENDCASE
@@ -898,7 +911,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
THIS.writeLog( lcErrorInfo ) THIS.writeLog( lcErrorInfo )
ENDIF ENDIF
IF THIS.l_Debug AND THIS.l_ShowErrors IF THIS.l_Debug AND THIS.l_ShowErrors
MESSAGEBOX( lcErrorInfo, 0+16+4096, 'FOXBIN2PRG: ERROR!!', 60000 ) MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 )
ENDIF ENDIF
IF tlRelanzarError && Usado en Unit Testing IF tlRelanzarError && Usado en Unit Testing
THROW THROW
@@ -942,21 +955,21 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
LOCAL lcNext_Bak, I LOCAL lcNext_Bak, I
lcNext_Bak = '' lcNext_Bak = ''
FOR I = 0 TO 99 FOR I = 0 TO 9
IF I = 0 IF I = 0
IF NOT FILE( tcOutputFileName + '.BAK' ) IF NOT FILE( tcOutputFileName + '.BAK' )
lcNext_Bak = '.BAK' lcNext_Bak = '.BAK'
EXIT EXIT
ENDIF ENDIF
ELSE ELSE
IF NOT FILE( tcOutputFileName + '.' + PADL(I,2,'0') + '.BAK' ) IF NOT FILE( tcOutputFileName + '.' + PADL(I,1,'0') + '.BAK' )
lcNext_Bak = '.' + PADL(I,2,'0') + '.BAK' lcNext_Bak = '.' + PADL(I,1,'0') + '.BAK'
EXIT EXIT
ENDIF ENDIF
ENDIF ENDIF
ENDFOR ENDFOR
lcNext_Bak = EVL( lcNext_Bak, '.100.BAK' ) && Para que no quede nunca vac<61>o lcNext_Bak = EVL( lcNext_Bak, '.X.BAK' ) && Para que no quede nunca vac<61>o
RETURN lcNext_Bak RETURN lcNext_Bak
ENDPROC ENDPROC
@@ -972,10 +985,12 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
loFSO = THIS.o_FSO loFSO = THIS.o_FSO
IF FILE(lcEXE_CAPS) IF FILE(lcEXE_CAPS)
THIS.writeLog( '* Se ha encontrado el programa de capitalizaci<63>n de nombres [' + lcEXE_CAPS + ']' ) *THIS.writeLog( '* Se ha encontrado el programa de capitalizaci<63>n de nombres [' + lcEXE_CAPS + ']' )
THIS.writeLog( TEXTMERGE(C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC) )
ELSE ELSE
*-- No existe el programa de capitalizaci<63>n, as<61> que no se capitalizan los nombres. *-- No existe el programa de capitalizaci<63>n, as<61> que no se capitalizan los nombres.
THIS.writeLog( '* No se ha encontrado el programa de capitalizaci<63>n de nombres [' + lcEXE_CAPS + ']' ) *THIS.writeLog( '* No se ha encontrado el programa de capitalizaci<63>n de nombres [' + lcEXE_CAPS + ']' )
THIS.writeLog( TEXTMERGE(C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC) )
EXIT EXIT
ENDIF ENDIF
@@ -1024,15 +1039,10 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
LPARAMETERS tcFileName, tcEXE_CAPS, toFSO AS Scripting.FileSystemObject LPARAMETERS tcFileName, tcEXE_CAPS, toFSO AS Scripting.FileSystemObject
LOCAL lcLog, laFile(1,5) LOCAL lcLog, laFile(1,5)
THIS.writeLog( '- Se ha solicitado capitalizar el archivo [' + tcFileName + ']' ) *THIS.writeLog( '- Se ha solicitado capitalizar el archivo [' + tcFileName + ']' )
THIS.writeLog( TEXTMERGE(C_REQUESTING_CAPITALIZATION_OF_FILE_LOC) )
lcLog = '' lcLog = ''
DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, .T. DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, .T.
*IF ADIR( laFile, tcFileName, '', 1 ) > 0 AND laFile(1,1) <> JUSTFNAME(tcFileName)
* toFSO.MoveFile( FORCEPATH( laFile(1,1), JUSTPATH(tcFileName) ), tcFileName )
* THIS.writeLog( ' => Se renombrar<61> a [' + tcFileName + ']' )
*ELSE
* THIS.writeLog( ' => No se renombrar<61> a [' + tcFileName + '] porque ya estaba correcto.' )
*ENDIF
THIS.writeLog( lcLog ) THIS.writeLog( lcLog )
ENDPROC ENDPROC
@@ -1080,7 +1090,7 @@ DEFINE CLASS frm_avance AS FORM
DOCREATE = .T. DOCREATE = .T.
AUTOCENTER = .T. AUTOCENTER = .T.
BORDERSTYLE = 2 BORDERSTYLE = 2
CAPTION = C_PROCESS_PROGRESS_LOC CAPTION = C_PROCESS_PROGRESS_LOC + ' '
CONTROLBOX = .F. CONTROLBOX = .F.
BACKCOLOR = RGB(255,255,255) BACKCOLOR = RGB(255,255,255)
nMAX_VALUE = 100 nMAX_VALUE = 100
@@ -1394,7 +1404,7 @@ DEFINE CLASS c_conversor_base AS SESSION
LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' LOCAL toFoxbin2prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG'
#ENDIF #ENDIF
THIS.writeLog( '' ) THIS.writeLog( '' )
THIS.writeLog( C_CONVERTING_FILE_LOC + THIS.c_OutputFile + '...' ) THIS.writeLog( C_CONVERTING_FILE_LOC + ' ' + THIS.c_OutputFile + '...' )
ENDPROC ENDPROC
@@ -1563,19 +1573,6 @@ DEFINE CLASS c_conversor_base AS SESSION
EXIT EXIT
ENDIF ENDIF
*-- Esto fuerza la conversi<73>n a formato 12 hs, que no me interesa.
*lcTime=laDir[1,4]
*lnHour=VAL(lcTime)
*IF lnHour<12
* lcTime=ALLTRIM(STR(IIF(lnHour=0,12,lnHour),2))+SUBSTR(lcTime,3)+" AM"
*ELSE
* lcTime=ALLTRIM(STR(IIF(lnHour=12,24,lnHour)-12,2))+SUBSTR(lcTime,3)+" PM"
*ENDIF
*IF VAL(lcTime)<10
* lcTime="0"+lcTime
*ENDIF
*lcTimeStamp_Ret = DTOC(laDir[1,3])+" "+lcTime
ltTimeStamp = EVALUATE( '{^' + DTOC(laDir(1,3)) + ' ' + TRANSFORM(laDir(1,4)) + '}' ) ltTimeStamp = EVALUATE( '{^' + DTOC(laDir(1,3)) + ' ' + TRANSFORM(laDir(1,4)) + '}' )
*-- En mi arreglo, si la hora pasada tiene 32 segundos o m<>s, redondeo al siguiente minuto, ya que *-- En mi arreglo, si la hora pasada tiene 32 segundos o m<>s, redondeo al siguiente minuto, ya que
@@ -2386,7 +2383,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
lnCantComillas = OCCURS( '"', lcMetadatos ) lnCantComillas = OCCURS( '"', lcMetadatos )
IF lnCantComillas % 2 <> 0 && Valido que las comillas "" sean pares IF lnCantComillas % 2 <> 0 && Valido que las comillas "" sean pares
ERROR "Error de datos: No se puede parsear porque las comillas no son pares en la l<>nea [" + lcMetadatos + "]" *ERROR "Error de datos: No se puede parsear porque las comillas no son pares en la l<>nea [" + lcMetadatos + "]"
ERROR (TEXTMERGE(C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC))
ENDIF ENDIF
lnLastPos = 1 lnLastPos = 1
@@ -2479,9 +2477,10 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*-- Validaci<63>n *-- Validaci<63>n
IF EMPTY(taBloquesExclusion(tnBloquesExclusion,2)) IF EMPTY(taBloquesExclusion(tnBloquesExclusion,2))
ERROR 'No se ha encontrado el marcador de fin [' + ta_ID_Bloques(lnPrimerID,2) ; *ERROR 'No se ha encontrado el marcador de fin [' + ta_ID_Bloques(lnPrimerID,2) ;
+ '] que cierra al marcador de inicio [' + ta_ID_Bloques(lnPrimerID,1) ; + '] que cierra al marcador de inicio [' + ta_ID_Bloques(lnPrimerID,1) ;
+ '] de la l<>nea ' + TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1)) + '] de la l<>nea ' + TRANSFORM(taBloquesExclusion(tnBloquesExclusion,1))
ERROR (TEXTMERGE(C_END_MARKER_NOT_FOUND_LOC))
ENDIF ENDIF
ENDIF ENDIF
ENDFOR ENDFOR
@@ -2848,22 +2847,20 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
#ENDIF #ENDIF
*-- ESTRUCTURA A ANALIZAR: Propiedades normales, con CR codificado (<fb2p_value>) y con CR+LF (<fb2p_value>) *-- ESTRUCTURA A ANALIZAR: Propiedades normales, con CR codificado (<fb2p_value>) y con CR+LF (<fb2p_value>)
#IF .F. * HEIGHT = 2.73
HEIGHT = 2.73 * NAME = "c1"
NAME = "c1" * prop1 = .F. && Mi prop 1
prop1 = .F. && Mi prop 1 * prop_especial_cr = <fb2p_value>Este es el valor 1&#10;Este el 2&#10;Y Este bajo Shift_Enter el 3</fb2p_value>
prop_especial_cr = <fb2p_value>Este es el valor 1&#10;Este el 2&#10;Y Este bajo Shift_Enter el 3</fb2p_value> * prop_especial_crlf = <fb2p_value>
prop_especial_crlf = <fb2p_value> * Este es el valor 1
Este es el valor 1 * Este el 2
Este el 2 * Y Este bajo Shift_Enter el 3
Y Este bajo Shift_Enter el 3 * </fb2p_value>
</fb2p_value> * WIDTH = 27.40
WIDTH = 27.40 * _MEMBERDATA = <VFPData>
_MEMBERDATA = <VFPData> * <memberdata NAME="mimetodo" DISPLAY="miMetodo"/>
<memberdata NAME="mimetodo" DISPLAY="miMetodo"/> * <memberdata NAME="mimetodo2" DISPLAY="miMetodo2"/>
<memberdata NAME="mimetodo2" DISPLAY="miMetodo2"/> * </VFPData> && XML Metadata for customizable properties
</VFPData> && XML Metadata for customizable properties
#ENDIF
*-- Fin: ESTRUCTURA A ANALIZAR: *-- Fin: ESTRUCTURA A ANALIZAR:
TRY TRY
@@ -3333,13 +3330,15 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
CASE LEFT( tcLine + ' ', 10 ) == C_ENDDEFINE + ' ' && Fin de bloque (ENDDEFINE) encontrado CASE LEFT( tcLine + ' ', 10 ) == C_ENDDEFINE + ' ' && Fin de bloque (ENDDEFINE) encontrado
IF llEsProcedureDeClase IF llEsProcedureDeClase
ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ; *ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ;
+ toClase._Nombre + ' (' + loProcedure._Nombre + ')' ; + toClase._Nombre + ' (' + loProcedure._Nombre + ')' ;
+ ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile + ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile
ERROR (TEXTMERGE(C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC))
ELSE ELSE
ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ; *ERROR 'Error de anidamiento de estructuras. Se esperaba ENDPROC y se encontr<74> ENDDEFINE en la clase ' ;
+ toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ; + toClase._Nombre + ' (' + toObjeto._Nombre + '.' + loProcedure._Nombre + ')' ;
+ ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile + ', l<>nea ' + TRANSFORM(I) + ' del archivo ' + THIS.c_InputFile
ERROR (TEXTMERGE(C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_2_LOC))
ENDIF ENDIF
ENDCASE ENDCASE
ENDIF ENDIF
@@ -3686,10 +3685,11 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*-- Validaci<63>n *-- Validaci<63>n
IF EMPTY( toClase._Fin ) IF EMPTY( toClase._Fin )
ERROR 'No se ha encontrado el marcador de fin [ENDDEFINE] ' ; *ERROR 'No se ha encontrado el marcador de fin [ENDDEFINE] ' ;
+ 'que cierra al marcador de inicio [DEFINE CLASS] ' ; + 'que cierra al marcador de inicio [DEFINE CLASS] ' ;
+ 'de la l<>nea ' + TRANSFORM( toClase._Inicio ) + ' ' ; + 'de la l<>nea ' + TRANSFORM( toClase._Inicio ) + ' ' ;
+ 'para el identificador [' + toClase._Nombre + ']' + 'para el identificador [' + toClase._Nombre + ']'
ERROR (TEXTMERGE(C_ENDDEFINE_MARKER_NOT_FOUND_LOC))
ENDIF ENDIF
toClase._PROPERTIES = THIS.classProps2Memo( toClase ) toClase._PROPERTIES = THIS.classProps2Memo( toClase )
@@ -5478,7 +5478,8 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin
lnNumCampo = ASCAN( laFieldTypes, laProps(I), 1, -1, 1, 1+2+4+8 ) lnNumCampo = ASCAN( laFieldTypes, laProps(I), 1, -1, 1, 1+2+4+8 )
IF lnNumCampo = 0 IF lnNumCampo = 0
ERROR 'No se encontr<74> el campo [' + laProps(I) + '] en la estructura del archivo ' + DBF("TABLABIN") *ERROR 'No se encontr<74> el campo [' + laProps(I) + '] en la estructura del archivo ' + DBF("TABLABIN")
ERROR (TEXTMERGE(C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC))
ENDIF ENDIF
lcFieldType = laFieldTypes(lnNumCampo,2) lcFieldType = laFieldTypes(lnNumCampo,2)
@@ -6751,7 +6752,8 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
FOR I = lnFin TO 1 STEP -1 FOR I = lnFin TO 1 STEP -1
IF NOT EMPTY(laLineas(I)) && <20>ltima l<>nea de c<>digo IF NOT EMPTY(laLineas(I)) && <20>ltima l<>nea de c<>digo
IF LEFT( laLineas(I), 10 ) <> C_ENDPROC IF LEFT( laLineas(I), 10 ) <> C_ENDPROC
ERROR 'Procedimiento sin cerrar. La <20>ltima l<>nea de c<>digo debe ser ENDPROC. [' + laLineas(1) + ']' *ERROR 'Procedimiento sin cerrar. La <20>ltima l<>nea de c<>digo debe ser ENDPROC. [' + laLineas(1) + ']'
ERROR (TEXTMERGE(C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC))
ENDIF ENDIF
EXIT EXIT
ENDIF ENDIF
@@ -8006,9 +8008,11 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -8171,9 +8175,11 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -8478,9 +8484,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -8490,7 +8498,8 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg
DO CASE DO CASE
CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME )
toEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME *toEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME
toEx.USERVALUE = C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME
ENDCASE ENDCASE
IF THIS.l_Debug AND _VFP.STARTMODE = 0 IF THIS.l_Debug AND _VFP.STARTMODE = 0
@@ -8845,9 +8854,11 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -8857,7 +8868,8 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg
DO CASE DO CASE
CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME )
toEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME *toEx.USERVALUE = 'Archivo duplicado: ' + loReg.NAME
toEx.USERVALUE = C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME
ENDCASE ENDCASE
IF THIS.l_Debug AND _VFP.STARTMODE = 0 IF THIS.l_Debug AND _VFP.STARTMODE = 0
@@ -8977,9 +8989,11 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -9051,9 +9065,11 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -9061,20 +9077,21 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg
CATCH TO toEx CATCH TO toEx
DO CASE DO CASE
CASE toEx.ERRORNO = 13 && Alias not found CASE toEx.ERRORNO = 13 && Alias not found
toEx.USERVALUE = 'WARNING!!' + CR_LF ; *toEx.USERVALUE = 'WARNING!!' + CR_LF ;
+ 'MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on ' ; + 'MAKE SURE YOU ARE NOT USING A TABLE ALIAS ON INDEX KEY EXPRESSIONS!! (ex: index on ' ;
+ UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ; + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ;
+ '<27><>ATENCI<43>N!!' + CR_LF ; + '<27><>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 ' ; + '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)' + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.campo tag nombreclave)'
toEx.USERVALUE = TEXTMERGE(C_WARN_TABLE_ALIAS_ON_INDEX_EXPRESSION_LOC)
*!* CASE toEx.ErrorNo = 1976 && Cannot resolve backlink *!* CASE toEx.ErrorNo = 1976 && Cannot resolve backlink
*!* toEx.UserValue = 'WARNING!!' + CR_LF ; *!* toEx.UserValue = 'WARNING!!' + CR_LF ;
*!* + "MAY BE DATABASE FIELDS DOESN'T" ; *!* + "MAY BE DATABASE FIELDS DOESN'T" ;
*!* + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ; *!* + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.field tag keyname)' + CR_LF + CR_LF ;
*!* + '<27><>ATENCI<43>N!!' + CR_LF ; *!* + '<27><>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 ' ; *!* + '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)' *!* + UPPER(JUSTSTEM(THIS.c_InputFile)) + '.campo tag nombreclave)'
ENDCASE ENDCASE
IF THIS.l_Debug AND _VFP.STARTMODE = 0 IF THIS.l_Debug AND _VFP.STARTMODE = 0
@@ -9148,9 +9165,11 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -9205,7 +9224,8 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg
*-- Verificaci<63>n de men<65> VFP 9 *-- Verificaci<63>n de men<65> VFP 9
IF FCOUNT() < 25 OR EMPTY(FIELD("RESNAME")) OR EMPTY(FIELD("SYSRES")) IF FCOUNT() < 25 OR EMPTY(FIELD("RESNAME")) OR EMPTY(FIELD("SYSRES"))
ERROR 'Menu [' + (THIS.c_InputFile) + '] is NOT VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU ' + JUSTFNAME((THIS.c_InputFile)) *ERROR 'Menu [' + (THIS.c_InputFile) + '] is NOT VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU ' + JUSTFNAME((THIS.c_InputFile))
ERROR (TEXTMERGE(C_MENU_NOT_IN_VFP9_FORMAT_LOC))
ENDIF ENDIF
*-- Header *-- Header
@@ -9223,9 +9243,11 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg
lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() ) lnLen = LEN( toFoxbin2prg.get_PROGRAM_HEADER() )
DO CASE DO CASE
CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen ) CASE FILE(THIS.c_OutputFile) AND SUBSTR( FILETOSTR( THIS.c_OutputFile ), lnLen ) == SUBSTR( C_FB2PRG_CODE, lnLen )
THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' ) *THIS.writeLog( 'El archivo de salida [' + THIS.c_OutputFile + '] no se sobreescribe por ser igual al generado.' )
THIS.writeLog( TEXTMERGE(C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC) )
CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 CASE toFoxbin2prg.doBackup( .F., .T., '', '', '' ) AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0
ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly' *ERROR 'No se puede generar el archivo [' + THIS.c_OutputFile + '] porque es ReadOnly'
ERROR (TEXTMERGE(C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC))
ENDCASE ENDCASE
ENDIF ENDIF
@@ -10618,7 +10640,8 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
lcValueType = 'C' lcValueType = 'C'
OTHERWISE OTHERWISE
ERROR 'Propiedad [' + TRANSFORM(tnPropertyID) + '] no reconocida.' *ERROR 'Propiedad [' + TRANSFORM(tnPropertyID) + '] no reconocida.'
ERROR (TEXTMERGE(C_PROPERTY_NAME_NOT_RECOGNIZED_LOC))
ENDCASE ENDCASE
RETURN lcValueType RETURN lcValueType
@@ -10853,7 +10876,8 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
lcType = 'Field' lcType = 'Field'
OTHERWISE OTHERWISE
ERROR 'Clase [' + THIS.CLASS + '] desconocida' *ERROR 'Clase [' + THIS.CLASS + '] desconocida'
ERROR (TEXTMERGE(C_UNKNOWN_CLASS_NAME_LOC))
ENDCASE ENDCASE
@@ -15286,8 +15310,9 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE
ELSE ELSE
IF THIS.l_Debug IF THIS.l_Debug
toConversor.writeLog( REPLICATE(C_TAB,tnNivel) ; *toConversor.writeLog( REPLICATE(C_TAB,tnNivel) ;
+ 'Objeto [' + toObj.CLASS + '] sin registro oReg (nivel ' + TRANSFORM(tnNivel) + ')' ) + 'Objeto [' + toObj.CLASS + '] no contiene el objeto oReg (nivel ' + TRANSFORM(tnNivel) + ')' )
toConversor.writeLog( REPLICATE(C_TAB,tnNivel) + TEXTMERGE(C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC) )
ENDIF ENDIF
ENDIF ENDIF