From d7744c3c721984a5ea1821b9bad2b24a4a87a849 Mon Sep 17 00:00:00 2001 From: fernando Date: Wed, 29 Jan 2014 19:08:24 +0100 Subject: [PATCH 1/3] Changeset: 147 v1.19.6 - Mejorado el soporte para SourceSafe (SCCAPI) --- foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 337408 -> 340224 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 231 +++++++++++++++++++++++++++++++++++++++++-------- 4 files changed, 197 insertions(+), 38 deletions(-) diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 8a9caae..796e859 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Open Source" _ProductName = " FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = " 210" +_Revision = " 214" _LanguageID = "1034" _AutoIncrement = "1" * @@ -51,7 +51,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144682071" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144882531" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index f205034dac689633653258103eb9cc20e9fcd3f6..a503c6a661075ff2b934cb4eb9941cfe4419d835 100644 GIT binary patch delta 17417 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 z%0A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 L@IN;5TweM=pJ(3~ delta 14428 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 U`P+@uwhrQ-{E7d<=DUUcKO`r^C;$Ke diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index e17e388ca22b48e7f46c06ec90e2b33e83695a61..985da2f6cf5139200ad75ed6097192acbe067483 100644 GIT binary patch delta 73 zcmZ3_vz~{=fR9mjBg+mJHVX?QQ)AP~hgkmUfSHC2P~aA#px~we1g0h?AR%WUo&>}| MzNw|<^CZ05;SPKL7v# diff --git a/foxbin2prg.prg b/foxbin2prg.prg index eea25b7..603c14a 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -94,9 +94,9 @@ *--------------------------------------------------------------------------------------------------- * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * tc_InputFile (v! IN ) Nombre completo (fullpath) del archivo a convertir -* tcType_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG -* tcTextName_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG -* tlGenText_na ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG +* tcType ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG +* tcTextName ( ) Por ahora se mantiene por compatibilidad con SCCTEXT.PRG +* tlGenText ( ) 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 @@ -110,7 +110,7 @@ * * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- -LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile +LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName, tcRecompile *-- Internacionalización / Internationalization *-- Fin / End @@ -310,10 +310,11 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' -LOCAL lnResp +LOCAL lnResp, loEx as Exception goCnv = CREATEOBJECT("c_foxbin2prg") -lnResp = goCnv.ejecutar( tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug ; - , '', NULL, NULL, .F., tcOriginalFileName, tcRecompile ) +loEx = NULL +lnResp = goCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; + , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) IF _VFP.STARTMODE <= 1 @@ -321,8 +322,8 @@ IF _VFP.STARTMODE <= 1 ENDIF *-- Muy útil para procesos batch que capturan el código de error -DECLARE ExitProcess IN Win32API INTEGER ExitCode -IF NOT EMPTY(lnResp) +IF NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" + DECLARE ExitProcess IN Win32API INTEGER ExitCode ExitProcess(1) ENDIF @@ -352,6 +353,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -444,6 +446,84 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDPROC + PROCEDURE ChangeFileAttribute + * Using Win32 Functions in Visual FoxPro + * example=103 + * Changing file attributes + LPARAMETERS tcFilename, tcAttrib + tcAttrib = UPPER(tcAttrib) + + #DEFINE FILE_ATTRIBUTE_READONLY 1 + #DEFINE FILE_ATTRIBUTE_HIDDEN 2 + #DEFINE FILE_ATTRIBUTE_SYSTEM 4 + #DEFINE FILE_ATTRIBUTE_DIRECTORY 16 + #DEFINE FILE_ATTRIBUTE_ARCHIVE 32 + #DEFINE FILE_ATTRIBUTE_NORMAL 128 + #DEFINE FILE_ATTRIBUTE_TEMPORARY 512 + #DEFINE FILE_ATTRIBUTE_COMPRESSED 2048 + + DECLARE SHORT SetFileAttributes IN kernel32 STRING tcFileName, INTEGER dwFileAttributes + DECLARE INTEGER GetFileAttributes IN kernel32 STRING tcFileName + + * read current attributes for this file + dwFileAttributes = GetFileAttributes(tcFilename) + + IF dwFileAttributes = -1 + * the file does not exist + RETURN + ENDIF + + IF dwFileAttributes > 0 + IF '+R' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_READONLY) + ENDIF + IF '+A' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) + ENDIF + IF '+S' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) + ENDIF + IF '+H' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) + ENDIF + IF '+D' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) + ENDIF + IF '+T' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) + ENDIF + IF '+C' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) + ENDIF + + IF '-R' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_READONLY) = FILE_ATTRIBUTE_READONLY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_READONLY + ENDIF + IF '-A' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_ARCHIVE) = FILE_ATTRIBUTE_ARCHIVE + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_ARCHIVE + ENDIF + IF '-S' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_SYSTEM) = FILE_ATTRIBUTE_SYSTEM + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_SYSTEM + ENDIF + IF '-H' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_HIDDEN) = FILE_ATTRIBUTE_HIDDEN + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_HIDDEN + ENDIF + IF '-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY + ENDIF + IF '-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY + ENDIF + IF '-C' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_COMPRESSED) = FILE_ATTRIBUTE_COMPRESSED + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_COMPRESSED + ENDIF + + * setting selected attributes + =SetFileAttributes(tcFilename, dwFileAttributes) + ENDIF + ENDPROC + + PROCEDURE compileFoxProBinary LPARAMETERS tcFilename LOCAL lcType @@ -565,9 +645,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-------------------------------------------------------------------------------------------------------------- * PARÁMETROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT) * tc_InputFile (!v IN ) Nombre del archivo de entrada - * tcType_na (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe - * tcTextName_na (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe - * tlGenText_na (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe + * tcType (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe + * tcTextName (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe + * tlGenText (?v IN ) NO DISPONIBLE. Se mantiene por compatibilidad con SourceSafe * tcDontShowErrors (?v IN ) '1' para no mostrar mensajes de error (MESSAGEBOX) * tcDebug (?v IN ) '1' para habilitar modo debug (SOLO DESARROLLO) * tcDontShowProgress (?v IN ) '1' para inhabilitar la barra de progreso @@ -582,7 +662,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * generar errores de compilación, típicamente los #include. * NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress ; + LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ; , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName, tcRecompile TRY @@ -698,25 +778,87 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDFOR OTHERWISE - *-- UN ARCHIVO INDIVIDUAL - IF FILE(tc_InputFile) + *-- UN ARCHIVO INDIVIDUAL O CONSULTA DE SOPORTE DE ARCHIVO + IF LEN(NVL(tc_InputFile,'')) = 1 + *-- Consulta de soporte de conversión (compatibilidad con SourceSafe) + DO CASE + CASE tc_InputFile $ 'dD' && DBC, DBF + lnCodError = 1 + CASE tc_InputFile $ 'KBMRV' && SCX, LBX, MNX, FRX, VCX + lnCodError = 2 + OTHERWISE + lnCodError = 0 + ENDCASE + + ELSE + IF NOT EMPTY(tcType) AND NOT EMPTY(tcTextName) + *-- Compatibilidad con SourceSafe + lcExt = JUSTEXT(tc_InputFile) - IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) - CD (tcRecompile) - ELSE - CD (JUSTPATH(tc_InputFile)) - ENDIF - - THIS.c_LogFile = tc_InputFile + '.LOG' - - IF THIS.l_Debug - IF FILE( THIS.c_LogFile ) - ERASE ( THIS.c_LogFile ) + IF tlGenText + *-- Create a textfile from binary + DO CASE + CASE lcExt_1 = 'PJX' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_PJ2)) + CASE lcExt_1 = 'VCX' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_VC2)) + CASE lcExt_1 = 'SCX' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_SC2)) + CASE lcExt_1 = 'FRX' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_FR2)) + CASE lcExt_1 = 'LBX' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_LB2)) + CASE lcExt_1 = 'DBF' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_DB2)) + CASE lcExt_1 = 'DBC' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_DC2)) + CASE lcExt_1 = 'MNX' + tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_MN2)) + ENDCASE + + ELSE + *-- Create a binary from textfile + DO CASE + CASE lcExt_1 = THIS.c_PJ2 + tc_InputFile = FORCEEXT(tc_InputFile, 'pjx') + CASE lcExt_1 = THIS.c_VC2 + tc_InputFile = FORCEEXT(tc_InputFile, 'vcx') + CASE lcExt_1 = THIS.c_SC2 + tc_InputFile = FORCEEXT(tc_InputFile, 'scx') + CASE lcExt_1 = THIS.c_FR2 + tc_InputFile = FORCEEXT(tc_InputFile, 'frx') + CASE lcExt_1 = THIS.c_LB2 + tc_InputFile = FORCEEXT(tc_InputFile, 'lbx') + CASE lcExt_1 = THIS.c_DB2 + tc_InputFile = FORCEEXT(tc_InputFile, 'dbf') + CASE lcExt_1 = THIS.c_DC2 + tc_InputFile = FORCEEXT(tc_InputFile, 'dbc') + CASE lcExt_1 = THIS.c_MN2 + tc_InputFile = FORCEEXT(tc_InputFile, 'mnx') + ENDCASE + ENDIF - THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) ENDIF - lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) + IF FILE(tc_InputFile) + + IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) + CD (tcRecompile) + ELSE + CD (JUSTPATH(tc_InputFile)) + ENDIF + + THIS.c_LogFile = tc_InputFile + '.LOG' + + IF THIS.l_Debug + IF FILE( THIS.c_LogFile ) + ERASE ( THIS.c_LogFile ) + ENDIF + THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) + ENDIF + + lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) + ENDIF ENDIF ENDCASE @@ -1041,6 +1183,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcLog, laFile(1,5) *THIS.writeLog( '- Se ha solicitado capitalizar el archivo [' + tcFileName + ']' ) THIS.writeLog( TEXTMERGE(C_REQUESTING_CAPITALIZATION_OF_FILE_LOC) ) + THIS.ChangeFileAttribute( tcFileName, '-R' ) lcLog = '' DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, .T. THIS.writeLog( lcLog ) @@ -8010,7 +8153,9 @@ DEFINE CLASS c_conversor_vcx_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -8177,7 +8322,9 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -8486,7 +8633,9 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -8856,7 +9005,9 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -8991,7 +9142,9 @@ DEFINE CLASS c_conversor_frx_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -9067,7 +9220,9 @@ DEFINE CLASS c_conversor_dbf_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -9167,7 +9322,9 @@ DEFINE CLASS c_conversor_dbc_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 @@ -9245,7 +9402,9 @@ DEFINE CLASS c_conversor_mnx_a_prg AS c_conversor_bin_a_prg 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( 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 toFoxBin2prg.ChangeFileAttribute( THIS.c_OutputFile, '-R' ) ; + AND STRTOFILE( C_FB2PRG_CODE, THIS.c_OutputFile ) = 0 *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 From 3a14c2ff8473efefb8b12e3cc386484c3f92fc46 Mon Sep 17 00:00:00 2001 From: fernando Date: Thu, 30 Jan 2014 20:46:37 +0100 Subject: [PATCH 2/3] Changeset: 148 v1.19.5 - Agregado soporte para SourceSafe (Diff y Merge) --- foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 340224 -> 340352 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 188 +++++++++++++++++++++++++----------------------- foxbin2prg_en.h | 45 ++++++++++++ 5 files changed, 147 insertions(+), 90 deletions(-) create mode 100644 foxbin2prg_en.h diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2 index 796e859..7449a10 100644 --- a/foxbin2prg.pj2 +++ b/foxbin2prg.pj2 @@ -26,7 +26,7 @@ _LegalTrademark = "Open Source" _ProductName = " FOXBIN2PRG" _MajorVer = "1" _MinorVer = "19" -_Revision = " 214" +_Revision = " 216" _LanguageID = "1034" _AutoIncrement = "1" * @@ -51,7 +51,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144882531" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144955831" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index a503c6a661075ff2b934cb4eb9941cfe4419d835..c5cfb3dd46a06a8da8724d98a40b83828d112771 100644 GIT binary patch delta 14654 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 delta 14101 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 RbT#n*vyJ~}SnSaK{{RDE@0S1o diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 985da2f6cf5139200ad75ed6097192acbe067483..f5cba3eb3c47eb95f7436216844340281b1e9c77 100644 GIT binary patch delta 31 jcmZ3_vz~{=fR9mbBg+mJ7E4o8i^T_67{QFmM_97~eNYHC delta 31 jcmZ3_vz~{=fR9mjBg+mJ77Gg_)5Ql^7{QFmM_97~eC-G= diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 603c14a..cf0cea0 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -66,6 +66,7 @@ * 08/01/2014 FDBOZZO v1.19.3 Cambio en los timestamps de los TXT para mantener los valores vacíos que generaban muchísimas diferencias * 22/01/2014 FDBOZZO v1.19.4 Nuevo parámetro Recompile para forzar la recompilación. Ahora por defecto el binario no se recompila para ganar velocidad y evitar errores. Debe recompilar manualmente. * 22/01/2014 FDBOZZO v1.19.4 DBC: Agregado soporte para comentarios multilínea (propiedad Comment) +* 30/01/2014 FDBOZZO v1.19.5 Agregada compatibilidad con SourceSafe para Diff y Merge * * *--------------------------------------------------------------------------------------------------- @@ -279,7 +280,7 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #DEFINE C_FILE_DOESNT_EXIST_LOC 'El archivo no existe:' #DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC 'El archivo [<<.c_InputFile>>] no está soportado' #DEFINE C_FILE_NOT_FOUND_LOC 'No se encontró el archivo' - #DEFINE C_FOXBIN2PRG_CFG_EXTENSION_LOC 'extension:' + #DEFINE C_EXTENSION_RECONFIGURATION_LOC 'Reconfiguración de extensión:' #DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC 'FOXBIN2PRG: ERROR!!' #DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG: INFORMACIÓN DE SINTAXIS' #DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC 'FOXBIN2PRG [cType_ND cTextName_ND cGenText_ND cNoMostrarErrores cDebug]' + CR_LF + CR_LF ; @@ -308,25 +309,36 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb #ENDIF ******************************************************************************************************************* - -PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' +LOCAL loCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' LOCAL lnResp, loEx as Exception -goCnv = CREATEOBJECT("c_foxbin2prg") + +*SYS(2030,1) +*SYS(2335,0) +*IF PCOUNT() > 1 +* SET STEP ON +*ENDIF +loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL -lnResp = goCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; +lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; , '', NULL, @loEx, .F., tcOriginalFileName, tcRecompile ) ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) -IF _VFP.STARTMODE <= 1 - RETURN lnResp -ENDIF +*IF _VFP.STARTMODE <= 1 +* RETURN lnResp +*ENDIF *-- Muy útil para procesos batch que capturan el código de error -IF NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" +IF _VFP.STARTMODE > 1 AND NOT EMPTY(lnResp) AND VARTYPE(loEx) = "O" DECLARE ExitProcess IN Win32API INTEGER ExitCode ExitProcess(1) ENDIF +loEx = NULL +loCnv = NULL +RELEASE loEx, loCnv + +SET COVERAGE TO +RETURN lnResp QUIT @@ -489,6 +501,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF '+D' $ tcAttrib dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) ENDIF + IF '+N' $ tcAttrib + dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) + ENDIF IF '+T' $ tcAttrib dwFileAttributes = BITOR(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) ENDIF @@ -511,6 +526,9 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF '-D' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_DIRECTORY ENDIF + IF '-N' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_NORMAL) = FILE_ATTRIBUTE_NORMAL + dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_NORMAL + ENDIF IF '-T' $ tcAttrib AND BITAND(dwFileAttributes, FILE_ATTRIBUTE_TEMPORARY) = FILE_ATTRIBUTE_TEMPORARY dwFileAttributes = dwFileAttributes - FILE_ATTRIBUTE_TEMPORARY ENDIF @@ -667,18 +685,18 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM TRY LOCAL I, lcPath, lnCodError, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; - , llExisteConfig, lcConfData, lnFileCount ; + , llExisteConfig, lcConfData, lnFileCount, lcErrorInfo ; , loEx AS EXCEPTION ; , loFSO AS Scripting.FileSystemObject lnCodError = 0 - SET DELETED ON - SET DATE YMD - SET HOURS TO 24 - SET CENTURY ON - SET SAFETY OFF - SET TABLEPROMPT OFF + *SET DELETED ON + *SET DATE YMD + *SET HOURS TO 24 + *SET CENTURY ON + *SET SAFETY OFF + *SET TABLEPROMPT OFF IF _VFP.STARTMODE > 0 SET ESCAPE OFF @@ -714,11 +732,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF llExisteConfig FOR I = 1 TO ALINES( laConfig, FILETOSTR( lcConfigFile ), 1+4 ) - IF LOWER( LEFT( laConfig(I), 10 ) ) == C_FOXBIN2PRG_CFG_EXTENSION_LOC && 'extension:' + IF LOWER( LEFT( laConfig(I), 10 ) ) == 'extension:' lcConfData = ALLTRIM( SUBSTR( laConfig(I), 11 ) ) lcExt = 'c_' + ALLTRIM( GETWORDNUM( lcConfData, 1, '=' ) ) IF PEMSTATUS( THIS, lcExt, 5 ) THIS.ADDPROPERTY( lcExt, UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + *THIS.writeLog( 'Reconfiguración de extensión:' + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) + THIS.writeLog( C_EXTENSION_RECONFIGURATION_LOC + ' ' + lcExt + ' a ' + UPPER( ALLTRIM( GETWORDNUM( lcConfData, 2, '=' ) ) ) ) ENDIF ENDIF ENDFOR @@ -787,60 +807,13 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CASE tc_InputFile $ 'KBMRV' && SCX, LBX, MNX, FRX, VCX lnCodError = 2 OTHERWISE - lnCodError = 0 + lnCodError = -1 ENDCASE ELSE - IF NOT EMPTY(tcType) AND NOT EMPTY(tcTextName) - *-- Compatibilidad con SourceSafe - lcExt = JUSTEXT(tc_InputFile) - - IF tlGenText - *-- Create a textfile from binary - DO CASE - CASE lcExt_1 = 'PJX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_PJ2)) - CASE lcExt_1 = 'VCX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_VC2)) - CASE lcExt_1 = 'SCX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_SC2)) - CASE lcExt_1 = 'FRX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_FR2)) - CASE lcExt_1 = 'LBX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_LB2)) - CASE lcExt_1 = 'DBF' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_DB2)) - CASE lcExt_1 = 'DBC' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_DC2)) - CASE lcExt_1 = 'MNX' - tc_InputFile = FORCEEXT(tc_InputFile, LOWER(THIS.c_MN2)) - ENDCASE - - ELSE - *-- Create a binary from textfile - DO CASE - CASE lcExt_1 = THIS.c_PJ2 - tc_InputFile = FORCEEXT(tc_InputFile, 'pjx') - CASE lcExt_1 = THIS.c_VC2 - tc_InputFile = FORCEEXT(tc_InputFile, 'vcx') - CASE lcExt_1 = THIS.c_SC2 - tc_InputFile = FORCEEXT(tc_InputFile, 'scx') - CASE lcExt_1 = THIS.c_FR2 - tc_InputFile = FORCEEXT(tc_InputFile, 'frx') - CASE lcExt_1 = THIS.c_LB2 - tc_InputFile = FORCEEXT(tc_InputFile, 'lbx') - CASE lcExt_1 = THIS.c_DB2 - tc_InputFile = FORCEEXT(tc_InputFile, 'dbf') - CASE lcExt_1 = THIS.c_DC2 - tc_InputFile = FORCEEXT(tc_InputFile, 'dbc') - CASE lcExt_1 = THIS.c_MN2 - tc_InputFile = FORCEEXT(tc_InputFile, 'mnx') - ENDCASE - - ENDIF - ENDIF IF FILE(tc_InputFile) + ERASE ( tc_InputFile + '.ERR' ) IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) CD (tcRecompile) @@ -850,6 +823,19 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.c_LogFile = tc_InputFile + '.LOG' + IF EVL(tcType,'0') <> '0' AND EVL(tcTextName,'0') <> '0' + *-- Compatibilidad con SourceSafe + + IF NOT tlGenText + *-- COMPATIBILIDAD CON SOURCESAFE. 30/01/2014 + *-- Create BINARIO desde versión TEXTO + *-- Como el archivo de entrada siempre es el binario cuando se usa SCCAPI, + *-- para se debe regenerar el binario (tlGenText=.F.) se debe usar como + *-- archivo de entrada tcTextName en su lugar. Aquí los intercambio. + tc_InputFile = tcTextName + ENDIF + ENDIF + IF THIS.l_Debug IF FILE( THIS.c_LogFile ) ERASE ( THIS.c_LogFile ) @@ -857,7 +843,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) ENDIF - lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) + lnCodError = THIS.Convertir( tc_InputFile, toModulo, toEx, .T., tcOriginalFileName ) ENDIF ENDIF ENDCASE @@ -866,11 +852,22 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CATCH TO toEx lnCodError = toEx.ErrorNo + lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile ADDPROPERTY(_SCREEN, 'ExitCode', toEx.ERRORNO) - IF llExisteConfig - THIS.writeLog( 'ERROR: ' + TRANSFORM(toEx.ERRORNO) + ', ' + toEx.MESSAGE + CR_LF ; - + toEx.PROCEDURE + ', line ' + TRANSFORM(toEx.LINENO) + CR_LF ; - + toEx.DETAILS ) + + TRY + STRTOFILE( lcErrorInfo, EVL(tc_InputFile,'foxbin2prg') + '.ERR' ) + CATCH TO loEx2 + ENDTRY + + IF THIS.l_Debug + IF _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + THIS.writeLog( lcErrorInfo ) + ENDIF + IF THIS.l_Debug AND THIS.l_ShowErrors + MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) ENDIF IF tlRelanzarError THROW @@ -935,83 +932,103 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ERROR C_FILE_DOESNT_EXIST_LOC + ' [' + .c_InputFile + ']' ENDIF - IF FILE( .c_InputFile + '.ERR' ) - TRY - ERASE ( .c_InputFile + '.ERR' ) - CATCH - ENDTRY - ENDIF - lcExtension = UPPER( JUSTEXT(.c_InputFile) ) DO CASE CASE lcExtension = 'VCX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_VC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_VC2 ), '+N' ) CASE lcExtension = 'SCX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_SC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_SC2 ), '+N' ) CASE lcExtension = 'PJX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), '+N' ) CASE lcExtension = 'PJM' .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_pjm_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_PJ2 ), '+N' ) CASE lcExtension = 'FRX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_FR2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_FR2 ), '+N' ) CASE lcExtension = 'LBX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_LB2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_LB2 ), '+N' ) CASE lcExtension = 'DBF' .c_OutputFile = FORCEEXT( .c_InputFile, .c_DB2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DB2 ), '+N' ) CASE lcExtension = 'DBC' .c_OutputFile = FORCEEXT( .c_InputFile, .c_DC2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_DC2 ), '+N' ) CASE lcExtension = 'MNX' .c_OutputFile = FORCEEXT( .c_InputFile, .c_MN2 ) .o_Conversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, .c_MN2 ), '+N' ) CASE lcExtension = .c_VC2 .c_OutputFile = FORCEEXT( .c_InputFile, 'VCX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'VCT' ), '+N' ) CASE lcExtension = .c_SC2 .c_OutputFile = FORCEEXT( .c_InputFile, 'SCX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'SCT' ), '+N' ) CASE lcExtension = .c_PJ2 .c_OutputFile = FORCEEXT( .c_InputFile, 'PJX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'PJT' ), '+N' ) CASE lcExtension = .c_FR2 .c_OutputFile = FORCEEXT( .c_InputFile, 'FRX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FRT' ), '+N' ) CASE lcExtension = .c_LB2 .c_OutputFile = FORCEEXT( .c_InputFile, 'LBX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'LBT' ), '+N' ) CASE lcExtension = .c_DB2 .c_OutputFile = FORCEEXT( .c_InputFile, 'DBF' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBF' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'FPT' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'CDX' ), '+N' ) CASE lcExtension = .c_DC2 .c_OutputFile = FORCEEXT( .c_InputFile, 'DBC' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DBC' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'DCT' ), '+N' ) CASE lcExtension = .c_MN2 .c_OutputFile = FORCEEXT( .c_InputFile, 'MNX' ) .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNX' ), '+N' ) + .ChangeFileAttribute( FORCEEXT( .c_InputFile, 'MNT' ), '+N' ) OTHERWISE *ERROR 'El archivo [' + .c_InputFile + '] no está soportado' @@ -1041,20 +1058,15 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM lnCodError = toEx.ERRORNO lcErrorInfo = THIS.Exception2Str(toEx) + CR_LF + CR_LF + C_SOURCEFILE_LOC + THIS.c_InputFile - TRY - STRTOFILE( lcErrorInfo, THIS.c_InputFile + '.ERR' ) - CATCH TO loEx2 - ENDTRY - IF THIS.l_Debug IF _VFP.STARTMODE = 0 SET STEP ON ENDIF - THIS.writeLog( lcErrorInfo ) - ENDIF - IF THIS.l_Debug AND THIS.l_ShowErrors - MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + *THIS.writeLog( lcErrorInfo ) ENDIF + *IF THIS.l_Debug AND THIS.l_ShowErrors + * MESSAGEBOX( lcErrorInfo, 0+16+4096, C_FOXBIN2PRG_ERROR_CAPTION_LOC, 60000 ) + *ENDIF IF tlRelanzarError && Usado en Unit Testing THROW ENDIF @@ -1183,7 +1195,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM LOCAL lcLog, laFile(1,5) *THIS.writeLog( '- Se ha solicitado capitalizar el archivo [' + tcFileName + ']' ) THIS.writeLog( TEXTMERGE(C_REQUESTING_CAPITALIZATION_OF_FILE_LOC) ) - THIS.ChangeFileAttribute( tcFileName, '-R' ) + THIS.ChangeFileAttribute( tcFileName, '+N' ) lcLog = '' DO (tcEXE_CAPS) WITH tcFileName, '', 'F', lcLog, .T. THIS.writeLog( lcLog ) diff --git a/foxbin2prg_en.h b/foxbin2prg_en.h new file mode 100644 index 0000000..a942b68 --- /dev/null +++ b/foxbin2prg_en.h @@ -0,0 +1,45 @@ +*------------------------------------------------------------------------------------------------------------------------------------------- +*-- ENGLISH TRANSLATION => RENAME OR COPY TO [foxbin2prg.h] TO USE, AND RECOMPILE FOXBIN2PRG.PRG - Feel free to change or adapt the strings. +*------------------------------------------------------------------------------------------------------------------------------------------- +#DEFINE C_ASTERISK_EXT_NOT_ALLOWED_LOC '* and ? extensions are not allowed because is dangerous (binaries can be overwriten with xx2 empty files)' +#DEFINE C_BACKLINK_CANT_UPDATE_BL_LOC 'Could not update backlink' +#DEFINE C_BACKLINK_OF_TABLE_LOC 'of table' +#DEFINE C_BACKUP_OF_LOC 'Backup of: ' +#DEFINE C_CANT_GENERATE_FILE_BECAUSE_IT_IS_READONLY_LOC 'Can't generate file [<>] because it is ReadOnly' +#DEFINE C_CONFIGFILE_LOC 'ConfigFile:' +#DEFINE C_CONVERTER_UNLOAD_LOC 'Converter unload' +#DEFINE C_CONVERTING_FILE_LOC 'Converting file' +#DEFINE C_DATA_ERROR_CANT_PARSE_UNPAIRING_DOUBLE_QUOTES_LOC 'Data Error: Cant't parse because unpairing double-quotes on line <>' +#DEFINE C_DUPLICATED_FILE_LOC 'Duplicated file' +#DEFINE C_ENDDEFINE_MARKER_NOT_FOUND_LOC 'No se ha encontrado el marcador de fin [ENDDEFINE] de la línea <> para el identificador [<>]' +#DEFINE C_END_MARKER_NOT_FOUND_LOC 'Can't found end marker [<>] that closes start marker [<>] on line <>' +#DEFINE C_FIELD_NOT_FOUND_ON_FILE_STRUCTURE_LOC 'Field [<>] not found on structure of file <>' +#DEFINE C_FILE_DOESNT_EXIST_LOC 'File doesn't exist:' +#DEFINE C_FILE_NAME_IS_NOT_SUPPORTED_LOC 'File [<<.c_InputFile>>] is not supported' +#DEFINE C_FILE_NOT_FOUND_LOC 'File not found' +#DEFINE C_EXTENSION_RECONFIGURATION_LOC 'Extension Reconfiguration:' +#DEFINE C_FOXBIN2PRG_ERROR_CAPTION_LOC 'FOXBIN2PRG: ERROR!!' +#DEFINE C_FOXBIN2PRG_INFO_SINTAX_LOC 'FOXBIN2PRG: SINTAXIS INFO' +#DEFINE C_FOXBIN2PRG_INFO_SINTAX_EXAMPLE_LOC 'FOXBIN2PRG [cType_NA cTextName_NA cGenText_NA cDontShowErrors cDebug cDontShowProgress cOriginalFileName cRecompile]' + CR_LF + CR_LF ; + + 'Example to generate TXT of all VCX of "c:\desa\clases", without showing error window and generating LOG file: ' + CR_LF ; + + ' FOXBIN2PRG "c:\desa\clases\*.vcx" "0" "0" "0" "1" "1"' + CR_LF + CR_LF ; + + '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 C_FOXBIN2PRG_JUST_VFP_9_LOC 'FOXBIN2PRG is only for Visual FoxPro 9.0!' +#DEFINE C_FOXBIN2PRG_WARN_CAPTION_LOC 'FOXBIN2PRG: WARNING!' +#DEFINE C_MENU_NOT_IN_VFP9_FORMAT_LOC 'Menu [<>] is NOT VFP 9 Format! - Please convert to VFP 9 with MODIFY MENU <>' +#DEFINE C_OBJECT_NAME_WITHOUT_OBJECT_OREG_LOC 'Object [<>] does not contain oReg object (level <>)' +#DEFINE C_NAMES_CAPITALIZATION_PROGRAM_FOUND_LOC '* Names capitalization program [<>] found' +#DEFINE C_NAMES_CAPITALIZATION_PROGRAM_NOT_FOUND_LOC '* Names capitalization program [<>] not found' +#DEFINE C_ONLY_SETNAME_AND_GETNAME_RECOGNIZED_LOC 'Operation not recognized. Only SETNAME and GETNAME allowed.' +#DEFINE C_OUTPUT_FILE_IS_NOT_OVERWRITEN_LOC 'Optimization: Output file [<>] is not overwriten because it is the same as the genereted.' +#DEFINE C_PROCEDURE_NOT_CLOSED_ON_LINE_LOC 'Procedure not closed. Last line of code must be ENDPROC. [<>]' +#DEFINE C_PROCESSING_LOC 'Processing file' +#DEFINE C_PROCESS_PROGRESS_LOC 'Process Progress:' +#DEFINE C_PROPERTY_NAME_NOT_RECOGNIZED_LOC 'Property [<>] is not recognized.' +#DEFINE C_REQUESTING_CAPITALIZATION_OF_FILE_LOC '- Requesting capitalization of file [<>]' +#DEFINE C_SOURCEFILE_LOC 'Source file: ' +#DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC 'Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>), line <> of file <>' +#DEFINE C_STRUCTURE_NESTING_ERROR_ENDPROC_EXPECTED_LOC 'Nesting structure error. ENDPROC expected but found ENDDEFINE on class <> (<>.<>), line <> of file <>' +#DEFINE C_UNKNOWN_CLASS_NAME_LOC 'Unknown class [<>]' +#DEFINE 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 <>.campo tag keyname)' From 0baa321224e09a399ed059c04af6f265577eeead Mon Sep 17 00:00:00 2001 From: fernando Date: Fri, 31 Jan 2014 01:19:40 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Changeset:=20149=20-=20Arreglo=20regeneraci?= =?UTF-8?q?=C3=B3n=20de=20dataenvironment=20en=20form=20cuando=20hay=20cla?= =?UTF-8?q?ses=20con=20nombre=20menor=20a=20'd'=20-=20Reactivada=20recompi?= =?UTF-8?q?laci=C3=B3n=20por=20defecto=20para=20poder=20ver=20siempre=20lo?= =?UTF-8?q?s=20m=C3=A9todos,=20si=20no=20algunos=20no=20se=20ven?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TESTS/DATOS_READONLY/encuestas.dbf | Bin 0 -> 578 bytes TESTS/DATOS_READONLY/fb2p_frm_1.sc2 | 20 +- TESTS/DATOS_READONLY/fb2p_frm_1.sct | Bin 14601 -> 15163 bytes TESTS/DATOS_READONLY/fb2p_frm_1.scx | Bin 4303 -> 4303 bytes TESTS/DATOS_READONLY/form1.sc2 | 191 ++++++++++++++++ TESTS/DATOS_READONLY/form1.sct | Bin 0 -> 8039 bytes TESTS/DATOS_READONLY/form1.scx | Bin 0 -> 2123 bytes foxbin2prg.pj2 | 4 +- foxbin2prg.pjt | Bin 340352 -> 340608 bytes foxbin2prg.pjx | Bin 1583 -> 1583 bytes foxbin2prg.prg | 331 +++++++++++++++------------- 11 files changed, 384 insertions(+), 162 deletions(-) create mode 100644 TESTS/DATOS_READONLY/encuestas.dbf create mode 100644 TESTS/DATOS_READONLY/form1.sc2 create mode 100644 TESTS/DATOS_READONLY/form1.sct create mode 100644 TESTS/DATOS_READONLY/form1.scx diff --git a/TESTS/DATOS_READONLY/encuestas.dbf b/TESTS/DATOS_READONLY/encuestas.dbf new file mode 100644 index 0000000000000000000000000000000000000000..4c4e02144958863a92ce2b8ec8d4c0de48edd0ba GIT binary patch literal 578 zcmXru<>X~zU|=}GXbU9K05bzaK#;$$e~5n&P{x@NNQj^*@pN(ZbB2gHi(-*?cJ%Rd z^8~AK)&$Cf>_P@^uFf8g5CIo$AkBd+31kPk28a5DIJ)=)?KcMUxzOZ!(fA{ks}SHC n;HrQIGE)rEL=+SP6$~xSEDa5fOp&CpYc@hs0b%+DVrm8eIzJ&4 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 b/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 index 4c89247..06a360a 100644 --- a/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 +++ b/TESTS/DATOS_READONLY/fb2p_frm_1.sc2 @@ -4,10 +4,10 @@ *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.19" SourceFile="C:\DESA\foxbin2prg\TESTS\DATOS_READONLY\fb2p_frm_1.scx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * -*< OLE: Nombre="Cl_form1.Cl_olecontrol1" Parent="Cl_form1" ObjName="Cl_olecontrol1" OLEObject="C:\Windows\system32\richtx32.ocx" Checksum="1767681336" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCT7i+++c4BAwAAAIACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAOAAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAAIAAAABwAAAP7///8JAAAA/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYArAAAAAAA//8AAP////8AAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACACwAAAEFwcGVhcmFuY2UACQAAAEkKAAAAAAAAAAwAAABCb3JkZXJTdHlsZQAJAAAASQoAAAABAAAADQAAAAAAAAUAAIAAAAAAAAABAAAAAAABAAIACAAAAHtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGRlZmYwe1xmb250dABCdWxsZXRJbmRlbnQAEQAAAE4NAAAABwAAAAAAAAAAAAAAEAAAAERpc2FibGVOb1Njcm9sbAAFAAAATAAAAABibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABSaWdodE1hcmdpbgARAAAATg0AAAAHAAAAAAAAAAAAAAAFAAAAVGV4dAAUAAAASAAAAAALAAAAT2xlY29udHJvbDENAAAAQXV0b1ZlcmJNZW51AAUAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" /> +*< OLE: Nombre="Cl_form1.Cl_olecontrol1" Parent="Cl_form1" ObjName="Cl_olecontrol1" OLEObject="C:\Windows\system32\richtx32.ocx" Checksum="617849590" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBjW5n1Hc8BAwAAAIACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAOAAAAAAAAAABAAAAAIAAAD+////BQAAAAYAAAAIAAAABwAAAP7///8JAAAA/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAACKDQAA7QYAACFDNBIBAAYArAAAAAAA//8AAP////8AAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACACwAAAEFwcGVhcmFuY2UACQAAAEkKAAAAAAAAAAwAAABCb3JkZXJTdHlsZQAJAAAASQoAAAABAAAADQAAAAAAAAUAAIAAAAAAAAABAAAAAAABAAIACAAAAHtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGRlZmYwe1xmb250dABCdWxsZXRJbmRlbnQAEQAAAE4NAAAABwAAAAAAAAAAAAAAEAAAAERpc2FibGVOb1Njcm9sbAAFAAAATAAAAABibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABSaWdodE1hcmdpbgARAAAATg0AAAAHAAAAAAAAAAAAAAAFAAAAVGV4dAAUAAAASAAAAAALAAAAT2xlY29udHJvbDENAAAAQXV0b1ZlcmJNZW51AAUAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" /> * DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" - *< CLASSDATA: Baseclass="form" Timestamp="2013/12/15 18:50:25" Scale="" Uniqueid="_3XW0B1R2O" /> + *< CLASSDATA: Baseclass="form" Timestamp="2014/01/30 20:58:05" Scale="" Uniqueid="_3XW0B1R2O" /> AllowOutput = .T. AlwaysOnBottom = .F. AlwaysOnTop = .F. @@ -133,7 +133,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" Name = "Cl_olecontrol1", ; Top = 256, ; Width = 131 - *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="olecontrol" UniqueID="_3XW0BXGCR" Timestamp="2013/12/03 20:18:24" ZOrder="2900" OLEObject="C:\Windows\system32\richtx32.ocx" CheckSum="1767681336" /> + *< END OBJECT: ClassLib="fb2p_test.vcx" BaseClass="olecontrol" UniqueID="_3XW0BXGCR" Timestamp="2013/12/03 20:18:24" ZOrder="2900" OLEObject="C:\Windows\system32\richtx32.ocx" CheckSum="617849590" /> ADD OBJECT 'Commandgroup1' AS commandgroup WITH ; BackColor = 255,128,255, ; @@ -483,7 +483,7 @@ DEFINE CLASS Cl_form1 AS cl_form OF "fb2p_test.vcx" ENDDEFINE DEFINE CLASS Dataenvironment AS dataenvironment - *< CLASSDATA: Baseclass="dataenvironment" Timestamp="2013/12/15 18:50:25" Scale="" Uniqueid="_3XW0B1R2N" ClassIcon="1" /> + *< CLASSDATA: Baseclass="dataenvironment" Timestamp="2014/01/30 20:58:05" Scale="" Uniqueid="_3XW0B1R2N" ClassIcon="1" /> AutoCloseTables = .T. AutoOpenTables = .T. Comment = "" @@ -515,6 +515,16 @@ DEFINE CLASS Dataenvironment AS dataenvironment Tag = "", ; Top = 20, ; Width = 102 - *< END OBJECT: BaseClass="cursor" UniqueID="_3XW0B58OZ" Timestamp="2013/12/15 18:50:25" ZOrder="300" /> + *< END OBJECT: BaseClass="cursor" UniqueID="_3XW0B58OZ" Timestamp="2014/01/30 20:58:05" ZOrder="300" /> + + PROCEDURE BeforeOpenTables + *-- Comentario en método [Dataenvironment.BeforeOpenTables] + + ENDPROC + + PROCEDURE Cursor1.Init + *-- Comentario en método [Dataenvironment.Cursor1.Init] + + ENDPROC ENDDEFINE diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.sct b/TESTS/DATOS_READONLY/fb2p_frm_1.sct index 4e33748d563755e28ca724f3d7cf6334f0304126..f9153415c027dc2835015ee1371d934e1cdf7803 100644 GIT binary patch delta 508 zcmeAy+Fi!Nz+i1X`J9RPMuo?W6BSq|e~@R{%+BP=Sf3IQy#Iq&}iUB>&x;c>9 zpD{ZG;c?Hr%o0*O>s(q?oL^+92hxYtqs!qQ?E~7|H&Ia1t#%^1CtZP3AWu31F$|!2 rl7#_e1-i!sfT}%#816Bk1t5>HY+k?;s>2?T96j@^?D@@q40t&J>->Ab delta 47 zcmV+~0MP%tc8PKX0021&k~bHzAmag%AO*7n0!;z4cLY!Yv(g4tEC+Ct?k~Ri&a*Bv F4G3#f5F`Kq diff --git a/TESTS/DATOS_READONLY/fb2p_frm_1.scx b/TESTS/DATOS_READONLY/fb2p_frm_1.scx index 9872f013354541cdfeb0971b39c7d57f9b10235a..9a9d709a16b15f2b477ec6d1cb99a9d30dbad653 100644 GIT binary patch literal 4303 zcmeHKU1$_n7`@T78bP5oYU*Ft)+CBVcXnt0Dg|d}XOoS4cQ!K{qk?D%LHnSU2KrK{ z3L=FTO0hl_>O=d|7Zs(nQi6hlpdu?AuAo!7E_Ib&>g>uzl8YsO5*%0;b`H!TiDZ^34E{Sr1qX7B#W{Q#xYc!jRWF)4+I)qNp4DuFJb0&%Zf5&S8aEtQzS>7G zYnD-}I5Oise!69r4XaWxY{nITy<+GU0~dfNd~|M9`pjH)LZ0!_@%eN!CqCboRlWWS zn8m6Fg>lXA{Gt(aL{xRk`m-6c4BN0a8997*UcjR1beM4GOP)@TLmz0MtI!7<=(sj~ zO9MR#eOm)P1%0@Io`yc^qYq+yw4LH#VdI`}ZdLk!6VXl1@s|*>N4^;y-4m&+rY_Hn zcdw2N6-qgC$c}7}Zyt(f6)RR!6jjY6k||Z`AcJ+_Jne5IF5o}X-#~3$`cNF*AgP-ZGVHsh!tw|35#TT2 zH1)y>(`49~^YDk-2mTQ_3LK~2)d*uf&ck05<-I|&2#X~%8C8jX`k8R*0j~%8fv>68 zM8?!oZn^|NEl0GyVS5i^bbF(b_i)ztf()r?KC; Gi{Ak52XUDI literal 4303 zcmeH~O>7Kd7{_1LgbG>|Md;R7h>z~~N2p{vJ7w5+XFEGpB#l(lgG41n;(~BMq;VjT zlnCO$LE?ar5F8{35s5@9;nW}zaY7s%_|Lu%@9xZWbtilDB)|9BKL2-~|2#8ocP2Px za{U6v*u>fatff&ip0Qj;u{sQsLs7?JnOM4ob!GL=E=^C{dL5QY4&BnZmbVn1V=Ozv zLsv6OJ}-{p^O0*E#~1XBp`y%NJoI)YuTc-a#6vgQH)a*C*Y?kUssEZx$}&Ra|8;V_FOjcw9Q$G?A zJ}^i%p;Wdy%rKcD&931L?}C@$EuHOW%9YuO-43%(o(RG$oCpTP(d40ev1t%_2wVZT zsa6HESTbju(LJ*oM9V(pz2GP~L$&Idg{0ZJX`6m{vzRpdK2x-; znZ;N=XaOPMH{6rOrP)Vn{2jS=He-!oG4LC1vxGEjY!Yo-kXM6sAWJnrhHkT@H2X!3 zr_Nz)J_rE?_zkyNN}B0&Mcd8DePBO0PBlM>#4Il>mhTBY+lkK3!dyo%- zd=oqcZ>Z+S(rspc#gN%d`^6Qp40#POz;>z$rLxswwq?C)O0yR$aOuDgP`8q?X3z?X h;|P8}ku0u^{`v2V#h*9P;x`Mg!yb;YvDdM4e*;a@ZL$CW diff --git a/TESTS/DATOS_READONLY/form1.sc2 b/TESTS/DATOS_READONLY/form1.sc2 new file mode 100644 index 0000000..48eceb6 --- /dev/null +++ b/TESTS/DATOS_READONLY/form1.sc2 @@ -0,0 +1,191 @@ +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +* (ES) AUTOGENERADO - ¡¡ATENCIÓN!! - ¡¡NO PENSADO PARA EJECUTAR!! USAR SOLAMENTE PARA INTEGRAR CAMBIOS Y ALMACENAR CON HERRAMIENTAS SCM!! +* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! +*-------------------------------------------------------------------------------------------------------------------------------------------------------- +*< FOXBIN2PRG: Version="1.19" SourceFile="C:\DESA\TEST\VARIOS\vcx2xml\form1.scx" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) +* +*< OLE: Nombre="frm_Form1.Olecontrol1" Parent="frm_Form1" ObjName="Olecontrol1" OLEObject="C:\Windows\system32\richtx32.ocx" Checksum="238423585" Value="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7////+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBWdmE47c4BAwAAAAACAAAAAAAAAwBPAGwAZQBPAGIAagBlAGMAdABEAGEAdABhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgEDAAAAAgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAAAAAAADAEEAYwBjAGUAcwBzAE8AYgBqAFMAaQB0AGUARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABPAAAAAAAAAAMAQwBoAGEAbgBnAGUAZABQAHIAbwBwAHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAEoAAAAAAAAABQAAAAIAAAD+////BAAAAP7///8GAAAABwAAAP7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9giHw7j9cbELm1BAIcAJQCIUM0EggAAAC/DQAAOhAAACFDNBIBAAYArAAAAAAA//8AAP//AQAAAAAAAAAAAAAATwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgcWhqIFp0dVFoYTtqZGZuW2lhZXRyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACADAAAAFJpZ2h0TWFyZ2luABEAAABODQAAAAcAAAAAAAAAAAAAAAUAAABUZXh0ABQAAABIAAAAAAsAAABPbGVjb250cm9sMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAACAAAAAAAAAAQAAAAEAAQACAAgAAAB7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1MlxkZWZmMHtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQXJpYWw7fX0NClx2aWV3a2luZDRcdWMxXHBhcmRcbGFuZzMwODJcZnMxOCBPbGVjb250cm9sMQ0KXHBhciB9DQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" /> +* +#INCLUDE "include\keycodes.h" + +DEFINE CLASS Dataenvironment AS dataenvironment + *< CLASSDATA: Baseclass="dataenvironment" Timestamp="2013/11/19 01:01:01" Scale="" Uniqueid="_3WJ0JJNQE" ClassIcon="1" /> + DataSource = .NULL. + Height = 200 + Left = 1 + Name = "Dataenvironment" + Top = 220 + Width = 520 + + ADD OBJECT 'Cursor1' AS cursor WITH ; + Alias = "foxuser_fdbozzo", ; + CursorSource = foxuser_fdbozzo.dbf, ; + Height = 90, ; + Left = 10, ; + Name = "Cursor1", ; + Top = 20, ; + Width = 90 + *< END OBJECT: BaseClass="cursor" UniqueID="_3XH1EYNDL" Timestamp="2013/11/29 20:22:23" ZOrder="300" /> + + PROCEDURE BeforeOpenTables + *-- Dataenvironment.BeforeOpenTables() + + ENDPROC + + PROCEDURE Cursor1.Init + *-- Dataenvironment.Cursor1.Init() + + ENDPROC + +ENDDEFINE + +DEFINE CLASS frm_Form1 AS form + *< CLASSDATA: Baseclass="form" Timestamp="2013/11/29 20:22:23" Scale="" Uniqueid="_3WJ0JJNQF" /> + * + *m: *metodo_comun && Método común + * + Caption = "Form1" + DoCreate = .T. + Height = 250 + Icon = container.ico + Left = 0 + Name = "frm_Form1" + Top = 0 + Width = 470 + WindowType = 1 + + ADD OBJECT 'Cnt_controles1' AS cnt_controles WITH ; + Left = 28, ; + Name = "Cnt_controles1", ; + TabIndex = 3, ; + Top = 72, ; + Check1.Alignment = 0, ; + Check1.Name = "Check1", ; + Check1.TabIndex = 1, ; + Check1.ZOrderSet = 0, ; + Check2.Alignment = 0, ; + Check2.Name = "Check2", ; + Check2.TabIndex = 2, ; + Check2.ZOrderSet = 1, ; + Check3.Alignment = 0, ; + Check3.Name = "Check3", ; + Check3.TabIndex = 4, ; + Check3.ZOrderSet = 4, ; + Check4.Alignment = 0, ; + Check4.Name = "Check4", ; + Check4.TabIndex = 5, ; + Check4.ZOrderSet = 5, ; + Label_h.Name = "Label_h", ; + Label_h.TabIndex = 6, ; + Label_h.ZOrderSet = 2, ; + Textbox_h.Name = "Textbox_h", ; + Textbox_h.TabIndex = 3, ; + Textbox_h.ZOrderSet = 3 + *< END OBJECT: ClassLib="bca.vcx" BaseClass="container" UniqueID="_3XH0XA3XD" Timestamp="2013/11/19 01:01:01" ZOrder="700" /> + + ADD OBJECT 'Cnt_controles1.Label1' AS label WITH ; + Caption = "Label1", ; + Height = 17, ; + Left = 24, ; + Name = "Label1", ; + TabIndex = 7, ; + Top = 84, ; + Width = 64 + *< END OBJECT: BaseClass="label" UniqueID="_3XH1DGY07" Timestamp="2013/11/19 01:01:01" ZOrder="800" /> + + ADD OBJECT 'Command1' AS commandbutton WITH ; + Caption = "Command1", ; + Height = 27, ; + Left = 28, ; + Name = "Command1", ; + TabIndex = 1, ; + Top = 20, ; + Width = 84 + *< END OBJECT: BaseClass="commandbutton" UniqueID="_3WJ0JJNQG" Timestamp="2013/11/23 14:11:05" ZOrder="500" /> + + ADD OBJECT 'Command2' AS commandbutton WITH ; + Caption = "Command1", ; + Height = 27, ; + Left = 132, ; + Name = "Command2", ; + TabIndex = 2, ; + Top = 20, ; + Width = 84 + *< END OBJECT: BaseClass="commandbutton" UniqueID="_3WJ0JJNQH" Timestamp="2013/11/23 13:58:05" ZOrder="600" /> + + ADD OBJECT 'Olecontrol1' AS olecontrol WITH ; + Height = 157, ; + Left = 328, ; + Name = "Olecontrol1", ; + Top = 72, ; + Width = 133 + *< END OBJECT: BaseClass="olecontrol" UniqueID="_3XI026DCE" Timestamp="2013/11/19 01:01:01" ZOrder="900" OLEObject="C:\Windows\system32\richtx32.ocx" CheckSum="238423585" /> + + PROCEDURE Load + *-- Form 1 LOAD() + + ENDPROC + + PROCEDURE metodo_comun && Método común + *-- frm_Form1.metodo_comun() + + ENDPROC + + PROCEDURE Unload + *-- Form1.Unload() + + ENDPROC + + PROCEDURE Cnt_controles1.Check1.Click + *-- Form1.Cnt_controles1.Check1.Click() + + ENDPROC + + PROCEDURE Cnt_controles1.Check2.Click + *-- Form1.Cnt_controles1.Check2.Click() + + ENDPROC + + PROCEDURE Cnt_controles1.Check3.Click + *-- Form1.Cnt_controles1.Check3.Click() + + ENDPROC + + PROCEDURE Cnt_controles1.Check4.Click + *-- Form1.Cnt_controles1.Check4.Click() + + ENDPROC + + PROCEDURE Cnt_controles1.Init + *-- Form1.Command1.Cnt_controles1.Init() + + ENDPROC + + PROCEDURE Cnt_controles1.Label1.Click + *-- Form1.Cnt_controles1.Label1.Click() ==> No hereda, es nuevo! + + ENDPROC + + PROCEDURE Command1.Click + *-- Form1.Command1.Click() + PUBLIC ; + glEnabled_Opc_A_2_Sub_2 ; + , glEnabled_Opc_A_2_Sub_3 ; + , glEnabled_Opc_B + + STORE .T. TO ; + glEnabled_Opc_A_2_Sub_2 ; + , glEnabled_Opc_A_2_Sub_3 ; + , glEnabled_Opc_B + + DO MENU1.MPR + + ENDPROC + + PROCEDURE Command2.Click + *-- Form1.Command2.Click() + QUIT + + ENDPROC + +ENDDEFINE diff --git a/TESTS/DATOS_READONLY/form1.sct b/TESTS/DATOS_READONLY/form1.sct new file mode 100644 index 0000000000000000000000000000000000000000..641214037242653e275b2c1002db7fc87052bdec GIT binary patch literal 8039 zcmeGhZEPb~@!3f(jeG8;2Wn3c9eYKfw#qHuUFVYC=?*!z+veoNxx^__F_`u4bG$ic z*R0oRuH{5Q2q7V;kjfwULw^AhLPBkS@C%{-E+BpYKg%B^kobdiR4Q%E%4G`Ua!9OBPf zw$U4!w0V=>G8~f*_pWD#)ar#K&9gpO5OsM+iR=r%U>}*w~ zRoZb}TJKZ4p|^W3$V`S*u6VNrpOL~hu_VUq!5cf@o1!kY@*%xf(3vI0FKFH04P;T!}U|f z&>c7~jK*iPWq(a!i)RwbVdyV2(+QRnt@Q*RI{#jnr`thXd-iI%eB>{&@$C z6ud69YJxyE+nvb7Oti?fpN>qsW?NpmIoU25Dbh{(!_bu9hVvn$x7*)AeTk;5!W>Om z5;i1EIZg1z$C+;)7!(2U1-|(vNP+7al@VsRm8QY1_ZdHed;-;(=wd>p&i&Vq?g6DgcTzOHAgptjVPX^NVR&YGLd@6?#1X8 zIlv?~FujgKC;1a#5YpSn-#}lFx}T}vpw`Y$G#i#zH&gx{d3G==~$pqSH!fi90i({V$4A~XYe!# z_G`9D597Wl5CkG-NaRW7o@LyOTuG5Rwd}8;i)`+!*4E0>m3(e)w^y|>p_r|D-)NOu zYHNGgZmIs-qLjX>rLL}Gs@ZPTAz8@{S!&e(8~iJEX}!9!qsZ%4tzF7|RyR+I-CoO1a5<6CB0-jR@PCP?=6Y^`NkUL~4ll6nD zATzJIspfqcyEJ7aFIXzIV?_pq7AVCKnc6oRiE@Aqot_cwOd z8Yx~wej0iW#u9||c5$A2%`zjXL633hNnr!`npp^)E9eL4SP8?e5>#Nkaid`*#IbL* z3Bm+MvpvW-w&yxf5VB3PZ9|t2j6*h^3$q(TJWv)lO$uJwOMw-aLHVq{#o#4GBTcYM zj3d~l+@;1%Rff`O*DtXlctJ*HSb+yHXUJ#ku1Vc($_i<5GkbnV>=#G3UbOz@|YDy|!~0X9Svx@FJ_&0%sPI^5ZJ0 z$5lj8p-S;Jro@iRRj$aKcR<7$YpIMikujzv)V&sC9ARUOHDDY#S!NjB%BZ;Y%Pt`q z#k?l1#EqCRe;ChfaULRBq7q8*Dh4qjmL*eoF|xb!f&@F3aZ`9Pvb*!rPR5IoC3rFA z8(}cJ4p9Ojy}h!D=?+t1oe}&J`cnX}vpIG=n8nMy)LH!N!f7I!gV%lx%M{BiK!#;1 zD*3M;jTn|4_GyLR6_BYqu0zIbk|7(WN_bpSjpM(Q5}{1yN!Ml5ab0GtQnJoHFY zg7F>zrcXZtPtYLppXp&JfWg@0lphp$cs&<=8AuJky728J*a&wi`~g9MN|6U)xO+il z#*&eLPrZcLs89rQelbI4OvcX(_uv?(4Yu;!DP6sKP1)QE%vhy!gj7ibh)n;4R^SW2uzy<@8bYvkfSGgKx$OV&HlX@+Zrq zY{xj}{(4BmtvXivJT;aywOGloED1Hgq6sNfU>-)%9Qn#s7HBK_b2-4s*?JwoBxCVS8uAVY=d@YE-8 ziKEYxtj`Z)5y}x?ojm&kTbhF3p$zy?GJsDY#Wu0v{q#g~d=d`A&wtYQqn>y@G)2m! z3um>-F1*nsn_vNl^g))BwS|A-{iy%zj6Ieks5`v>SgK%;_1P>Ni)Xtx{@>HU7rybO zD=+>2qw_z1eLA~9Ud~=97th`Yw*Ljxs+S?h<2(aZz)t{&Hw;0%=iHA)oKFgmhXGdj zB+*M>?Cwd=dczxC{mP!%u|I3+)N`c-)$vn!?~A8_YzzMhTi4xP%l6Ca4Xm}%iFrdu z$1lF*!!Ym*{rh1c6h)ly{rAB7#b6g|Ap@T*K^?x(biIz!)a`-gKaBpaqAsaTlXg0V z7n&XTS;cGjU{GjwY^&Go7+u{RP_H1BTubj=xqUmIYaUqixts8RL9sbBlxAOd&1O%x zceTQb+UyLJ6-hV(kOP4P+X8V;_C%rOdaYV-?@|Fv(G{t2bD BPh0>1 literal 0 HcmV?d00001 diff --git a/TESTS/DATOS_READONLY/form1.scx b/TESTS/DATOS_READONLY/form1.scx new file mode 100644 index 0000000000000000000000000000000000000000..6de218efa8ae50bc2bb785e7953f536e97b24d20 GIT binary patch literal 2123 zcmeH|F^|(Q6vxeRK;iBL$1$Ko2VuAY2}GP++v~uPOWZb9oTN!gTL}aRb+`c}Sdb7P zv4U8TKuGMYtT3{$@d1z!6B83303rTK+^bXEi0=2Kzn|lu{a)vT=<)! z{y_Ne@KxMOvb{f)KYb8hW@%kYHfU2e^c@e$3{$VuYU7s(_6L3$d*cjbh&}Q#^)rG_ zCmBCW$;8Z>lVqPnurKgmMg6Dnj}H^Fd1M@B;xA5LxDzDLOeAZi%h=GVv0V+tz!CgI z=o$1@v{i6ZpP0UhrNFA{zcXv+$@KabZ7tiZS|CWVh)M*W|Gxm}_Ihluf4*v#v2YnW8m+?b; z1 @@ -51,7 +51,7 @@ loProject = _VFP.Projects('foxbin2prg.pjx') WITH loProject.FILES .ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" /> - .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144955831" ID="1130644423" ObjRev="544" /> + .ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1144982028" ID="1130644423" ObjRev="544" /> * .ITEM('__newproject.f2b').Remove() diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index c5cfb3dd46a06a8da8724d98a40b83828d112771..674117c8b368c13591a07401ef448a0f9d9d2ac7 100644 GIT binary patch delta 12308 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 R_=(o)V7btVcMegT|1TBPH4=>6 z5mCgZIaaTQO-x*?720oFZ*khg$$DSap-&P$P3Z1DD%wvCI zRJu$e+vgHpgCSeopUdrEDRXLG$W%LU{9{Q3^VK&H}Y6@ysEIwtM*0j@$!gr>6 zA?=z4Qp!^=s_-GZ%IFF!T5kE!g%pwgTA(&gkF;jEz0ZnSn1+RP5>}hmgv5%^WYfct zhTaxMvCv?IqkYeH!|ytkJxbSD9QpG_>!gt+Jy=l}h6c2p2Ck_3ZGq5N*2F zVVbbflouB4yGUDQNgFD0G4`fPN1iX`joK<3SfVTH(e1z48`IXX7{||bRSsw;T4|^; zwMI)WCY$h{!ZcIA@GRkoX?J*_@Pp}Y_-J8-N#D^=SYw*rv7NBWw5y}5U$`aObL;+6 zzG(4M4za9q#E4W7y%s4eMnFqd7N+MNeO-K&Vks527=ssrsPrWW#Z7^o-0hZGRn=3j zj#|p47n$Dc6zV(A^4*TFRa#IwPHM+jbn4p8-m1zLRVx@-qNa_N`5J_4REYGZN}~Ga zR5M1t${3BbdiP#qtW37y5vFmSy9m~%U7bG?`kOj*32K^cjmo=g2iRPBjWzD?-{oM3 z_U4*QT|$K?rqV7QeRVddvder;9qoK653#AOUSGL((x!ljGy7dgvZ5bx8`=tiFc3Rl z$}?EiER*kESKdk|%;gsy1lOiXtjZY!rd1XVRY>%d=(#O!Dp)Y=e66FD$f)?psJPxD z?~}?LO%0B?@ue0*3;vg*(1E|T5G;6oC!v^6wFD-mGKbm{rpucgcoQqZUTADOam0lu zSP2vPNh`sx!E}b<`x>i2py!>chtHaRZd#$Cm-1hXJ6j9Q#lws*w-cO%hkSN@!H18s z7M5~98{w_BC8bA2CdWp{Ml)FfMg-M}wl$(%jR>w0 z7B!+hy23m&STfy>_1F{STc1eT^&Kc%UzDDhl+Z0H zvR8Wd*vOdJq|iV$&q~Sbtsh;4W!m#cE}dZk##3$7JWEQ_=V#>UyXNHTySGhc{byKHp(lTMhBXm3bGNh1*U2eT zEoDK`1^FZOhN2w9U%VG`gfYC}Eb|e{`0TUHKj2NYTF#lW^o98ahP;g2oUs{(_cC$| z3~9aM2Xs}l-H3PoO>m3(uDiKH)rT)ARZJYNi7f78r^W4F$ssBlELxGsXJCTLv}n-^n^Y zMzz!#qnNRZiBS{c7rdn=!dKk?0t*q6_<#$nvDn?n`;;+PzVHIGbaR`c7PX;FgFd53 zkE?yC&n&X$yDs2PGI{w0<|=IEFE22E)@bwp& zn`dOT-Hr+dD;+kEQcy2_Ucq!;evx?yFL~uf=80iI-o^?GkH@Nibew z?*8ek)VA%Yu*i@zJUs@Jn_q}UT{ycs#{~bg7xBO{td`q65kD4ulbY|rmzFUXO^ni{ ziSsh%FP84+6U&*aWo+-5nAomyy<a_VOisGlah_XP(aSSCkxy z>g2q=#amrw9?s==l`Oe#R>LQJ5VEv?K2x$Z=ElY1SA5B3<|Bp>-*Z{%vdqgaGhgu+ zt@7*5eXcOca-gNMF=)t>_(XrnQ~c0|_q>ApF0$hzt}q|V$&PBi5Am`_l8^IP7nSSu zYqdK+egzl*+)K&Qsu$1j<#tzDL($it2VcdAR5a%A;n(?ifVoiJ&U?1vpIt@$@-|AA z&RpO5yD&4y4zv-h$dW~f_^ z#VaN&!qU1QD7lEK@qFbqbU7n|AGpSvSym;e`M$&lwvv3sc}cv%b=-ek?JDFQZ!q`zX=Bv74(hg_t}eZFbAWT|BVKp|-OL%s=igwBL^huP za)UX0Oc}4%sdg3Vy<$@$Vqiw;dfB6&oF!6q%kB zo0yQ45}Q6*&3CT7c1mP?d~8kjo7voO6PI1Ggny0ZjIQg{;x^PZXLLfYKB#MsJ~yi{ zVuNb7r-aPW3B^T)Ia%f%Ehfh>Xrr2CO(}-r{7gK;N;Tmp)mmp^rI}6Eb?5BH&q^tq ze@(_5!%zDZo9(~097Ey-#Z<4ZsX?V;va4$v%S4#$>zZ6G6_Z0<(`g&Ucva-?>;$t714KC2ba7F#-N;gH%e+fExT-dt*`_SvFU=PBcN=kYQwn;JbxqsDvDJ>bUu{)y^Cx$H z^EUHNd*QB>^}^_4%T3HM6za3$@`n^Ct;cw%S#C63vG*>{%}vo8@^bRA5>(&n;i;CW zrK2=VurBd> z&wowHs%bL#~Thpc5+i#bqn$+2l`tt_&nTxohKmX+( zb8qzU10}ZsZmYJ!^1-U9X0=Tn!r$D()}+fdR}CATr{w#j+wbxv|=@%;3xq*FO znoZ_0?7P+UzuO7=O0oObUfu3%mEXOKg^Lt>quO%omYUhzc(cOQYUaC@EWT6hjcY62 zUdwksU@oqO>lJ>KklZW;Qn#`r{@w^WDZKZdUBgYAYp`sH~3Dz#Y6ZPPfg3pA~EK z+EROeQMt~zSRXc<)U{Q4*jz6x>QBYkqPCvT-zvY`i3Kvu~LQV9XH~MlGXbEERBuT z_L`+JuHt`}`x38%@UE-&l1r*oez$9z5T*+hM4EopE4_%RhIb3z)G7A1wGHCsnVH`$ z7i+87+trrS*z>WEnRlDN92I-;|JoWGIH_6c_MEIY;H34Z6F=~n1z09Ht9g#Z`>c{2 z#cR&o?g?}C*SV;6J7v4T8Ah$8?3Q{DH3tFCo|Te|*SFsPzmi!#eB2Xke-Him;wQ|@ zC8v>6G8Aq?-6wj*_D(Hq#*aN=K^`-ksd?|-?xU96^C=$q^})Q;Q|2e$2;mt|Sp&E6Qgp?ytVJDvXj#P^q7pIjIM@)yp)W=xfz3V^7kaFxpjLoqEAhY zRP(N{99fi;PO+gdXJkS5BsKTl{=H6B>|qUR=VRC)v*ABC>5#=Eo?*ju&*EdBF>g6B zGUjBCB7Gd93zg#Gwbixb__}Azy|3LQ)o!o$Uq1vcE-@oZ@!Wq*Q?u%Je%nmdrasTV zn5iQcH*P*As%xIUCZNH&p=5uCo+~d-5hBp_MG{lgXo-r~bKT|JJ*My{A_80la zeNqGQRv8!eOK$x3KFL}9_Pzo^qE)48?6qI=5SLcNLH6l-|i0Vz-%qveYZprqEBA6I_eoRvb3rp{e;yum@qRSZxKyyrpm zDa@JY9z?00&U~5jJHY(w#BUyy>TB|xCESo{V|Q0xasV~QJM)f*BzJL^Gw*vy@(w@e zs^lZYj8E^C5R)38V5P|D)MWGf!$$5(u0}B-%KA^1-i!Zu2*)F<`n>cIdT}L?-#a9E ziBDT`tHby`6wCt-OWxw+_PqOH$xqb8@Z7^vebFcW(oYy!;-%k zo4{Wvzf)3q{Zh2IG?jNLm70is`|+WrlAp%VPw5JOR4O_0)KbY_v>eE{B17yjke@A; znu$XPam^8_u~;yOw>%;>^cy)ysbKCif}r&G;$r*Og7R*3&LCcR1Q+-`n=d+ocD~8x zdlddCm)}zOt6Xk#6dm~{pSL_J`G^|~JW=7p20r4bi>7d&V_?lR9(xQtZ#o}x3?0wV!{{yX*e|{ zE;`TCpky3`M{pAsS|~;F@b}>Fpid*s0sjDgqcGlvAhMxwv{41U=nvFkMEeCY(qX{-gG8M$LVuya9_ZjB zL z0yhSqxW7=oA3X~2;AVgtqxERtD@Of~7yFep6PzGEMw(}IIkGDVzzzBF~ z478@PKpVgg81~N4I=tX`0XBLm27nb_YglVBbl~ryF9yLIfrMe;0x7;*H2^E#`j|42CFy zZpH|-83jH8uZ$Haf0#fgz|%2rj=2Ku9w*Qx9qt(14=)ieBMq`3x&m(Yg+LEx3A6}& z9sJ#FL@sj$S_j6rCVCECwoIUtU?*i-mJ76aJ&xX%nEzN9;(iq93!LKzTVmmX12+k@ zV~aqe!O7t4t(ed40xbde1uxwp(D|JL9R>FXe}>1U@osbiJP`alH2sP?;0*9u=x)E^ zOk+iq3BC?};~+v&BMjLvOgSXbTs&iw!Nb5oM+F*=^bNQG?0gJyG}3zT2=Ec;KBq8Z z;A!Be&{xk0^bkB3JpHUdhs*HVz?x_qcz8Lc_ZmJNfRBN`uq(LDbL79mlL7VyABD~l@cgy2L1h>uQKW%LqrkCX3ntP*Ymvr-M}Uj*@IS!= zz90M}c$t?-Vt`1^ZHdaj8=xmfi1ayFS-34C@qIN~q(=2Hyl zj_0p035dEZ7AYTW053`q>DGH9%>mB>&&4s;aga#AfmeZdLqAAI0u`Rr@RsAPm$4na4vWvjvD{q zSb=Z)Gy^=zg3)#yAA+4R0^rBX@ z-RDI*qcLDhJPE5mV01d0k>p0y9DHjSqhAe-lE6{mA%#XpQ6m{mham-q2hgj=Gg=2O z2Iov<teuIxHKQKB2 zE(8A!{m*(v^*pd~foB+hWHfXuBTpC@9u2P&G=6|lA8;4&IcUQXGzd-r+aG1r_#~s- z;8Eap(1E8IHS&a$0^fvga+Xm9co}#v^y}MEe#YnuxH+CAV+p|V6&mq^ zXMg^SK5>)C*Bgz4+afyk^^hnS z{5$vr^mtE+BEg5j^}Qr|fYb~8rw#W1+1?V3@sp?@3=dJDVMB>L{Uw?Nt^gl^KGsO0 zSzvqur_qfiS{N$PB5)#}_2>=~<@A)u8ece9fZgLI8ig?PWAIb3f4W4)I5FG<`{7Y_ z9wO1|T!{i3z}?rw{@)#uMagi9`oPcu1-3({j*ut|+z~v}AkqA(5{(8=0Uwzr(YYn~ z=HWy157=&*L@V}5v>ChcD_y%!P%X=Tc3h)B!)D9iMRt4ue* zjz&DouiRwX=_^yBKT$jIBR`q8wUB8cxF5K*wM-dpWO@nC0MCH_3`uT;i-CVs^4j7{ z3wQ|l@Afi%7$Q>(a6Wh*v2vU>;H)%oKbd?QW3<2wp;ITg#g^cC;Qi1?2guX`ybwI# z1DRal7C&f=`Ckr0!BCm%BfeUI0&Bo)p%=pqt^;oXkNy}VgcQ&OdjPo4IGL6rwFYkm zw;qqij539Q_kdqOcbh0vSMXu*DdhCBe@XT`7}M149lB9RM*%R^Vaa zd}wDlc02F{a5(g5NNvGWz#E{4$QlX*F9hdUYN(!-hQ0zX1BXG!IcsPs_&9hJ^fq@5 z-2s<_FG3IW)fmaD1r`kU^XI-ADrl;qZs6wNRnS+OX=pMy82ot)4J~M^p~c`daNBko zO7EbdGvHC+(-9hS?5?5CfjCcq+e3%;(aODqsLkhi%S`aVxXL%<&3Q_zD(p_AZl;EB+mp?(QC54-{T@+1vC1Q&r_ zCu?ZNGz|%@Fdg6>(=`-;7`*{_6*wOH592%y^@ZUe3=|42EMzG!%FeLkQjuPJ|9PtD%wLi(u1Lbl{qXUVyKFKZL%2ADsxo zE(i~2{{Z?8<{jJv+yuHG{$gVxxDR+HbSE1vtpgW<%WbtrN_5uJB^c(xa0@!vOG|ET zFW|XW&tQDKrby_kAE7<4H+Y?Kik31z*HT)0 zI2#zILT~s|OEbag;8P|o#V*j&Veka-Q0PfZwZuZ;T)+!gXent85_k`|7&>shmZpPG zgMZnA5!tGxGvIUJCD3C_v{VMZ3N}jHw4~dvrF$^kf?*AG;SMdm20sL^gf2yrLx~=P z`~R$^-M?$e3ha&;p!Z%a*&ozW6gUL@E%fP9E#-rgzzzSz9U~mx49*3QJ*6eDGg>+e zp5}%9zx^f5;cYFo=zv`f1qMLVT`heHJ_hav9ry~12&{q6zx75-1y(w;4Z}MF@G9sf z_BzS|r-A>5{>N2Ei@}9pD>ofYY_6jd;EUj`(1Y6OXjnMn3vcZI69LVl(FhD_2om~3 z&x+MitB#lg@K)#@h{rpEKLp=_?$Ad^eZilA+okB}ai)&eg3o}RvvjmPUq^nO@b`;| z84f`2L&^tRfKv=Qaz_0A893euLl3}Ala3z2upaz7bm;dwTG$z900b5Np^t9SQNJ$u zb6jvG^q4(5`W8F}{4Mk^r8;^I-U7Z3eHH2b2pnp_Gyc}mR;0P$?cj3gmbY~DHP~o{ zC}j{J?tzXhBeC^@i=m%a>ZmRF6R`Um9qp1WXft>{_%8IRdKPpWds+df`&#R z54^E2I(ZIWQ@|@1Kdhnih>XfGIyj1lf)mQIws3rRhyOwBr)-@9&A?G94~K+~D`*G0t%K_mP_%jzqD{wAY=ZrtA1uyP~GXmoN za98*igjwZ78U2K?KH3fI0sI5P{uKz@@4Fc>Uogy{ix3$x-+Xs$i{QqH`Bot2Gc>>o z2kQ~@T|>;rFnoQ$-z}AB9b&%q;1uvH=yJq-w{iD4(^c??;4RQc!)08FOJc1w&e{ zOegbX+73Pko|KQmh=`7Yt7(pHCO}hHxb^h4ZPV>aJyY_JaA?k!E3-$sfI+PmT*>U!P}ur zklKR32M>d@3pop)9SXw+7_P(9^@MlY4E`I;Y_${(XLK6Q=`8p;bTpjJdvG?7z^|c$ z;9MAd!*lR8=!@_b8VKC_>ep1>DqvDZ6+R~2aKG4}q=U}YLte2ksch`qiE_Vyqc zhGVavjlKO3a0obJnU=z_mxp01js`z~zKpGP6SyDvt0P)!imh~BD8euBY3SMKwe%KT z2#&dc`q(+WuycL{z60G28`n$lY;YBH@JZ}U^RaU+fWf5zI~g{PVr)d~zyU|Fk>EMc hz(!FD_Q6|&TX@cc`O`M?APePx4=Dc{&9U$F{{Y$Pg+TxS diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index f5cba3eb3c47eb95f7436216844340281b1e9c77..9ab4f1216734781b06d3ac8481888514df65ad82 100644 GIT binary patch delta 33 mcmZ3_vz~{=fR9mrBg;+}RtqBoBg@H$SpI`q7L$*$W&!|}WeI%% delta 33 mcmZ3_vz~{=fR9mbBg;+}R#Q_8W7ElpSpI`qhLex6W&!|}y$OQ= diff --git a/foxbin2prg.prg b/foxbin2prg.prg index cf0cea0..bd011c6 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -314,9 +314,11 @@ LOCAL lnResp, loEx as Exception *SYS(2030,1) *SYS(2335,0) -*IF PCOUNT() > 1 +*IF PCOUNT() > 1 && Saltear las querys de SourceSafe sobre soporte de archivos * SET STEP ON +* MESSAGEBOX( SYS(5)+CURDIR(),64+4096,PROGRAM(),5000) *ENDIF + loCnv = CREATEOBJECT("c_foxbin2prg") loEx = NULL lnResp = loCnv.ejecutar( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; @@ -690,6 +692,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM , loFSO AS Scripting.FileSystemObject lnCodError = 0 + tcRecompile = EVL(tcRecompile,'') *SET DELETED ON *SET DATE YMD @@ -719,7 +722,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Ejecución normal THIS.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1') THIS.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1') - THIS.l_Recompile = (NOT EMPTY(tcRecompile) AND (TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile))) + *THIS.l_Recompile = (NOT EMPTY(tcRecompile) AND (TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile))) + THIS.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile)) THIS.l_Debug = (TRANSFORM(tcDebug)=='1' OR FILE(FORCEEXT(THIS.c_Foxbin2prg_FullPath,'LOG'))) IF THIS.l_ShowProgress @@ -762,7 +766,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) CD (tcRecompile) ELSE - CD (JUSTPATH(lcFileSpec)) + *CD (JUSTPATH(lcFileSpec)) ENDIF THIS.c_LogFile = ADDBS( JUSTPATH( lcFileSpec ) ) + STRTRAN( JUSTFNAME( lcFileSpec ), '*', '_ALL' ) + '.LOG' @@ -818,7 +822,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM IF THIS.l_Recompile AND LEN(tcRecompile) > 3 AND DIRECTORY(tcRecompile) CD (tcRecompile) ELSE - CD (JUSTPATH(tc_InputFile)) + *CD (JUSTPATH(tc_InputFile)) ENDIF THIS.c_LogFile = tc_InputFile + '.LOG' @@ -832,7 +836,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM *-- Como el archivo de entrada siempre es el binario cuando se usa SCCAPI, *-- para se debe regenerar el binario (tlGenText=.F.) se debe usar como *-- archivo de entrada tcTextName en su lugar. Aquí los intercambio. - tc_InputFile = tcTextName + tc_InputFile = tcTextName + THIS.l_Recompile = .T. ENDIF ENDIF @@ -4402,111 +4407,119 @@ DEFINE CLASS c_conversor_prg_a_vcx AS c_conversor_prg_a_bin *-- Recorro las CLASES - FOR I = 1 TO toModulo._Clases_Count + FOR X = 1 TO 2 + FOR I = 1 TO toModulo._Clases_Count - loClase = toModulo._Clases(I) + loClase = toModulo._Clases(I) - *-- Inserto la clase - INSERT INTO TABLABIN ; - ( PLATFORM ; - , UNIQUEID ; - , TIMESTAMP ; - , CLASS ; - , CLASSLOC ; - , BASECLASS ; - , OBJNAME ; - , PARENT ; - , PROPERTIES ; - , PROTECTED ; - , METHODS ; - , OLE ; - , OLE2 ; - , RESERVED1 ; - , RESERVED2 ; - , RESERVED3 ; - , RESERVED4 ; - , RESERVED5 ; - , RESERVED6 ; - , RESERVED7 ; - , RESERVED8 ; - , USER) ; - VALUES ; - ( 'WINDOWS' ; - , loClase._UniqueID ; - , loClase._TimeStamp ; - , loClase._Class ; - , loClase._ClassLoc ; - , loClase._BaseClass ; - , loClase._ObjName ; - , loClase._Parent ; - , loClase._PROPERTIES ; - , loClase._PROTECTED ; - , loClase._METHODS ; - , loClase._Ole ; - , loClase._Ole2 ; - , loClase._RESERVED1 ; - , loClase._RESERVED2 ; - , loClase._RESERVED3 ; - , loClase._ClassIcon ; - , loClase._ProjectClassIcon ; - , loClase._Scale ; - , loClase._Comentario ; - , loClase._includeFile ; - , loClase._User ) + *-- El dataenvironment debe estar primero, luego lo demás. + IF X = 1 AND NOT loClase._baseclass == 'dataenvironment' ; + OR X = 2 AND loClase._baseclass == 'dataenvironment' + LOOP + ENDIF + + *-- Inserto la clase + INSERT INTO TABLABIN ; + ( PLATFORM ; + , UNIQUEID ; + , TIMESTAMP ; + , CLASS ; + , CLASSLOC ; + , BASECLASS ; + , OBJNAME ; + , PARENT ; + , PROPERTIES ; + , PROTECTED ; + , METHODS ; + , OLE ; + , OLE2 ; + , RESERVED1 ; + , RESERVED2 ; + , RESERVED3 ; + , RESERVED4 ; + , RESERVED5 ; + , RESERVED6 ; + , RESERVED7 ; + , RESERVED8 ; + , USER) ; + VALUES ; + ( 'WINDOWS' ; + , loClase._UniqueID ; + , loClase._TimeStamp ; + , loClase._Class ; + , loClase._ClassLoc ; + , loClase._BaseClass ; + , loClase._ObjName ; + , loClase._Parent ; + , loClase._PROPERTIES ; + , loClase._PROTECTED ; + , loClase._METHODS ; + , loClase._Ole ; + , loClase._Ole2 ; + , loClase._RESERVED1 ; + , loClase._RESERVED2 ; + , loClase._RESERVED3 ; + , loClase._ClassIcon ; + , loClase._ProjectClassIcon ; + , loClase._Scale ; + , loClase._Comentario ; + , loClase._includeFile ; + , loClase._User ) - THIS.insert_AllObjects( @loClase ) + THIS.insert_AllObjects( @loClase ) - *-- Inserto el COMMENT - INSERT INTO TABLABIN ; - ( PLATFORM ; - , UNIQUEID ; - , TIMESTAMP ; - , CLASS ; - , CLASSLOC ; - , BASECLASS ; - , OBJNAME ; - , PARENT ; - , PROPERTIES ; - , PROTECTED ; - , METHODS ; - , OLE ; - , OLE2 ; - , RESERVED1 ; - , RESERVED2 ; - , RESERVED3 ; - , RESERVED4 ; - , RESERVED5 ; - , RESERVED6 ; - , RESERVED7 ; - , RESERVED8 ; - , USER) ; - VALUES ; - ( 'COMMENT' ; - , 'RESERVED' ; - , loClase._TimeStamp ; - , '' ; - , '' ; - , '' ; - , loClase._ObjName ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , IIF(loClase._OlePublic, 'OLEPublic', '') ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ; - , '' ) + *-- Inserto el COMMENT + INSERT INTO TABLABIN ; + ( PLATFORM ; + , UNIQUEID ; + , TIMESTAMP ; + , CLASS ; + , CLASSLOC ; + , BASECLASS ; + , OBJNAME ; + , PARENT ; + , PROPERTIES ; + , PROTECTED ; + , METHODS ; + , OLE ; + , OLE2 ; + , RESERVED1 ; + , RESERVED2 ; + , RESERVED3 ; + , RESERVED4 ; + , RESERVED5 ; + , RESERVED6 ; + , RESERVED7 ; + , RESERVED8 ; + , USER) ; + VALUES ; + ( 'COMMENT' ; + , 'RESERVED' ; + , loClase._TimeStamp ; + , '' ; + , '' ; + , '' ; + , loClase._ObjName ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , IIF(loClase._OlePublic, 'OLEPublic', '') ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ; + , '' ) - ENDFOR && I = 1 TO toModulo._Clases_Count + ENDFOR && I = 1 TO toModulo._Clases_Count + ENDFOR && X = 1 TO 2 USE IN (SELECT("TABLABIN")) @@ -4671,7 +4684,7 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin #ENDIF TRY - LOCAL lcObjName, lnCodError, loEx AS EXCEPTION ; + LOCAL lcObjName, lnCodError, I, X, loEx AS EXCEPTION ; , loClase AS CL_CLASE OF 'FOXBIN2PRG.PRG' ; , loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG' @@ -4685,62 +4698,70 @@ DEFINE CLASS c_conversor_prg_a_scx AS c_conversor_prg_a_bin *-- Recorro las CLASES - FOR I = 1 TO toModulo._Clases_Count + FOR X = 1 TO 2 + FOR I = 1 TO toModulo._Clases_Count - loClase = toModulo._Clases(I) + loClase = toModulo._Clases(I) + + *-- El dataenvironment debe estar primero, luego lo demás. + IF X = 1 AND NOT loClase._baseclass == 'dataenvironment' ; + OR X = 2 AND loClase._baseclass == 'dataenvironment' + LOOP + ENDIF - *-- Inserto la clase - INSERT INTO TABLABIN ; - ( PLATFORM ; - , UNIQUEID ; - , TIMESTAMP ; - , CLASS ; - , CLASSLOC ; - , BASECLASS ; - , OBJNAME ; - , PARENT ; - , PROPERTIES ; - , PROTECTED ; - , METHODS ; - , OLE ; - , OLE2 ; - , RESERVED1 ; - , RESERVED2 ; - , RESERVED3 ; - , RESERVED4 ; - , RESERVED5 ; - , RESERVED6 ; - , RESERVED7 ; - , RESERVED8 ; - , USER) ; - VALUES ; - ( 'WINDOWS' ; - , loClase._UniqueID ; - , loClase._TimeStamp ; - , loClase._Class ; - , loClase._ClassLoc ; - , loClase._BaseClass ; - , loClase._ObjName ; - , loClase._Parent ; - , loClase._PROPERTIES ; - , loClase._PROTECTED ; - , loClase._METHODS ; - , loClase._Ole ; - , loClase._Ole2 ; - , loClase._RESERVED1 ; - , loClase._RESERVED2 ; - , loClase._RESERVED3 ; - , loClase._ClassIcon ; - , loClase._ProjectClassIcon ; - , loClase._Scale ; - , loClase._Comentario ; - , loClase._includeFile ; - , loClase._User ) + *-- Inserto la clase + INSERT INTO TABLABIN ; + ( PLATFORM ; + , UNIQUEID ; + , TIMESTAMP ; + , CLASS ; + , CLASSLOC ; + , BASECLASS ; + , OBJNAME ; + , PARENT ; + , PROPERTIES ; + , PROTECTED ; + , METHODS ; + , OLE ; + , OLE2 ; + , RESERVED1 ; + , RESERVED2 ; + , RESERVED3 ; + , RESERVED4 ; + , RESERVED5 ; + , RESERVED6 ; + , RESERVED7 ; + , RESERVED8 ; + , USER) ; + VALUES ; + ( 'WINDOWS' ; + , loClase._UniqueID ; + , loClase._TimeStamp ; + , loClase._Class ; + , loClase._ClassLoc ; + , loClase._BaseClass ; + , loClase._ObjName ; + , loClase._Parent ; + , loClase._PROPERTIES ; + , loClase._PROTECTED ; + , loClase._METHODS ; + , loClase._Ole ; + , loClase._Ole2 ; + , loClase._RESERVED1 ; + , loClase._RESERVED2 ; + , loClase._RESERVED3 ; + , loClase._ClassIcon ; + , loClase._ProjectClassIcon ; + , loClase._Scale ; + , loClase._Comentario ; + , loClase._includeFile ; + , loClase._User ) - THIS.insert_AllObjects( @loClase ) + THIS.insert_AllObjects( @loClase ) - ENDFOR && I = 1 TO toModulo._Clases_Count + ENDFOR && I = 1 TO toModulo._Clases_Count + ENDFOR && X = 1 TO 2 *-- Inserto el COMMENT final INSERT INTO TABLABIN ;