diff --git a/foxbin2prg.prg b/foxbin2prg.prg index ae1166a..0dc1e1d 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -142,6 +142,7 @@ * 03/03/2015 FDBOZZO v1.19.42 Mejora: Agregado soporte multi-proyecto (*.PJX, *.PJ2) cuando se especifica "file.pjx", "*" (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Cambiada la clase de base de FoxBin2Prg de custom a session (Lutz Scheffler) * 05/03/2015 FDBOZZO v1.19.42 Mejora: Permitir procesar los archivos de un proyecto sin convertir el PJX/2 (Lutz Scheffler) +* 06/03/2015 FDBOZZO v1.19.42 Bug Fix pjx: Permitir usar fin de linea (CR/LF) en los atributos de versión del PJX * * *--------------------------------------------------------------------------------------------------- @@ -4659,6 +4660,7 @@ DEFINE CLASS C_CONVERSOR_BASE AS SESSION ELSE lcValue = CHRTRAN( LEFT( tcNullTerminatedValue, lnNullPos - 1 ), ['], ["] ) ENDIF + lcValue = THIS.encode_SpecialCodes_1_31(lcValue) RELEASE tcNullTerminatedValue, lnNullPos RETURN lcValue ENDPROC @@ -13052,6 +13054,10 @@ ENDDEFINE DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg + _MEMBERDATA = [] ; + + [] ; + + [] + #IF .F. LOCAL THIS AS c_conversor_pjm_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF @@ -13429,6 +13435,15 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg RETURN ENDPROC + + + PROCEDURE strExtract_CR + LPARAMETERS tcText + tcText = THIS.decode_SpecialCodes_1_31( STREXTRACT( tcText, 'Comments=', CR_LF ) ) + RETURN tcText + ENDPROC + + ENDDEFINE @@ -14587,6 +14602,8 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -14646,6 +14663,34 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE + PROCEDURE decode_SpecialCodes_1_31 + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcText (!@ IN ) Decodifica los primeros 31 caracteres ASCII de {nCode} a CHR(nCode) + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, '{' + TRANSFORM(I) + '}', CHR(I) ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + + PROCEDURE encode_SpecialCodes_1_31 + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, CHR(I), '{' + TRANSFORM(I) + '}' ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + PROCEDURE setParsedProjInfoLine LPARAMETERS tcProjInfoLine THIS.setParsedInfoLine( THIS, tcProjInfoLine ) @@ -14655,14 +14700,31 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE PROCEDURE setParsedInfoLine LPARAMETERS toObject, tcInfoLine - LOCAL lcAsignacion, lcCurDir - lcCurDir = ADDBS(THIS._HomeDir) - IF LEFT(tcInfoLine,1) == '.' - lcAsignacion = 'toObject' + tcInfoLine - ELSE - lcAsignacion = 'toObject.' + tcInfoLine - ENDIF - &lcAsignacion. + + LOCAL lcAsignacion, lcCurDir, lcValue, loEx as Exception + + TRY + lcCurDir = ADDBS(THIS._HomeDir) + IF LEFT(tcInfoLine,1) == '.' + lcAsignacion = 'toObject' + tcInfoLine + ELSE + lcAsignacion = 'toObject.' + tcInfoLine + ENDIF + + lcValue = GETWORDNUM(lcAsignacion, 2, '=') + + IF TYPE(lcValue) = "C" THEN + lcAsignacion = GETWORDNUM(lcAsignacion, 1, '=') + '= THIS.encode_SpecialCodes_1_31(' + lcValue + ')' + ENDIF + + &lcAsignacion. + + CATCH TO loEx + loEx.UserValue = loEx.UserValue + 'lcAsignacion = [' + TRANSFORM(lcAsignacion) + ']' + CR_LF + THROW + ENDTRY + + RETURN ENDPROC @@ -14677,6 +14739,7 @@ DEFINE CLASS CL_PROJECT AS CL_COL_BASE ELSE lcValue = CHRTRAN( LEFT( lcStr, MIN(tnLen, lnNullPos - 1 ) ), ['], ["] ) ENDIF + lcValue = THIS.encode_SpecialCodes_1_31(lcValue) RETURN lcValue ENDPROC @@ -19377,6 +19440,8 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE + [] ; + [] ; + [] ; + + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -19400,6 +19465,34 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE + PROCEDURE decode_SpecialCodes_1_31 + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * tcText (!@ IN ) Decodifica los primeros 31 caracteres ASCII de {nCode} a CHR(nCode) + *--------------------------------------------------------------------------------------------------- + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, '{' + TRANSFORM(I) + '}', CHR(I) ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + + PROCEDURE encode_SpecialCodes_1_31 + LPARAMETERS tcText + LOCAL I + FOR I = 0 TO 31 + tcText = STRTRAN( tcText, CHR(I), '{' + TRANSFORM(I) + '}' ) + ENDFOR + RELEASE I + RETURN tcText + ENDPROC + + + PROCEDURE setParsedHeadInfoLine LPARAMETERS tcHeadInfoLine THIS.setParsedInfoLine( THIS, tcHeadInfoLine ) @@ -19409,13 +19502,30 @@ DEFINE CLASS CL_PROJ_SRV_HEAD AS CL_CUS_BASE PROCEDURE setParsedInfoLine LPARAMETERS toObject, tcInfoLine - LOCAL lcAsignacion, lcCurDir - IF LEFT(tcInfoLine,1) == '.' - lcAsignacion = 'toObject' + tcInfoLine - ELSE - lcAsignacion = 'toObject.' + tcInfoLine - ENDIF - &lcAsignacion. + + LOCAL lcAsignacion, lcCurDir, lcValue, loEx as Exception + + TRY + IF LEFT(tcInfoLine,1) == '.' + lcAsignacion = 'toObject' + tcInfoLine + ELSE + lcAsignacion = 'toObject.' + tcInfoLine + ENDIF + + lcValue = GETWORDNUM(lcAsignacion, 2, '=') + + IF TYPE(lcValue) = "C" THEN + lcAsignacion = GETWORDNUM(lcAsignacion, 1, '=') + '= THIS.encode_SpecialCodes_1_31(' + GETWORDNUM(lcAsignacion, 2, '=') + ')' + ENDIF + + &lcAsignacion. + + CATCH TO loEx + loEx.UserValue = loEx.UserValue + 'lcAsignacion = [' + TRANSFORM(lcAsignacion) + ']' + CR_LF + THROW + ENDTRY + + RETURN ENDPROC