From 76e656a6e69aac9384d12039e4fbdffaaa282597 Mon Sep 17 00:00:00 2001 From: fernando Date: Fri, 20 Dec 2013 19:09:47 +0100 Subject: [PATCH] Changeset: 104 - Terminado DIFF - Inicio de MERGE --- foxbin2prg.pjt | Bin 268917 -> 272679 bytes foxbin2prg.pjx | Bin 1713 -> 1582 bytes foxbin2prg.prg | 252 +++++++++++++++++++++++++------------------------ 3 files changed, 130 insertions(+), 122 deletions(-) diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt index b55eeb4e5a087c047d8b163714af4ceb6e797f86..1c7b6bf51a17f50a84848322ae065d898facb163 100644 GIT binary patch delta 17216 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 diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index d6e7160e14107ed8617ce923ae2e58afedfb8a93..8e05bdbb0a2d5b1b4b631d66012e59b4fd3b64a8 100644 GIT binary patch delta 84 zcmdnUyN-v|fR{&vc_Zs~7B+KBOA~Xm$%k0%8G|NwuxU)zVinN=3mP*(fm?`zf|~*m Zn3|Y?gsOn}KM*UJS{RrZOwM9G0s!gN5V-&V delta 159 zcmZ3-vyqq8fR{&zWh3i$7B(|83o|40$%k0%8AB$wuxd`$W);=}3L2OgF+hP^h=PKf z0uY#*n1F<8fS8eyfkDC0%+l0!au(|m2ZdmuScsvav5}djg^7g$h-G1FZeVE%(f|Tr f13-oV0f-+2B7i`_(8$!xX!09Yxyc=@DvVM9511O~ diff --git a/foxbin2prg.prg b/foxbin2prg.prg index e6f75ba..608f7e4 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -85,10 +85,12 @@ * 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 +* tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar +* el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) * * Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX" *--------------------------------------------------------------------------------------------------- -LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress +LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress, tcOriginalFileName *-- Internacionalización / Internationalization *-- Fin / End @@ -269,20 +271,14 @@ LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErro PUBLIC goCnv AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' LOCAL lnResp goCnv = CREATEOBJECT("c_foxbin2prg") -lnResp = goCnv.ejecutar( tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress ) +lnResp = goCnv.ejecutar( tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug ; + , '', NULL, NULL, .F., tcOriginalFileName ) -IF _VFP.STARTMODE = 0 - RETURN +IF _VFP.STARTMODE > 0 + QUIT ENDIF -*-- Muy útil para procesos batch que capturan el código de error -DECLARE ExitProcess in Win32API INTEGER ExitCode -IF NOT EMPTY(lnResp) - ExitProcess(1) -ENDIF - -QUIT - +RETURN lnResp ******************************************************************************************************************* @@ -318,6 +314,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM + [] ; + [] ; + [] ; + + [] ; + [] ; + [] @@ -340,6 +337,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM nClassTimeStamp = '' o_Conversor = NULL o_Frm_Avance = NULL + o_FSO = NULL c_VC2 = 'VC2' && VCX c_SC2 = 'SC2' && SCX c_PJ2 = 'PJ2' && PJX @@ -359,6 +357,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM SET TABLEPROMPT OFF THIS.c_Foxbin2prg_FullPath = SUBSTR( SYS(16), AT( 'C_FOXBIN2PRG.INIT', SYS(16) ) + LEN('C_FOXBIN2PRG.INIT') + 1 ) THIS.c_CurDir = SYS(5) + CURDIR() + THIS.o_FSO = NEWOBJECT("Scripting.FileSystemObject") ENDPROC @@ -388,14 +387,17 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * toModulo (?@ OUT) Referencia de objeto del módulo generado (para Unit Testing) * toEx (?@ OUT) Objeto con información del error * tlRelanzarError (?v IN ) Indica si el error debe relanzarse o no + * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar + * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) *-------------------------------------------------------------------------------------------------------------- LPARAMETERS tc_InputFile, tcType_na, tcTextName_na, tlGenText_na, tcDontShowErrors, tcDebug, tcDontShowProgress ; - , toModulo, toEx AS EXCEPTION, tlRelanzarError + , toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName TRY LOCAL I, lcPath, lnResp, lcFileSpec, lcFile, laFiles(1,5), laConfig(1), lcConfigFile, lcExt ; , llExisteConfig, lcConfData, lnFileCount ; - , loEx AS EXCEPTION + , loEx AS EXCEPTION ; + , loFSO as Scripting.FileSystemObject lnResp = 0 @@ -410,6 +412,8 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM SET ESCAPE OFF ENDIF + loFSO = THIS.o_FSO + DO CASE CASE VERSION(5) < 900 *-- '¡FOXBIN2PRG es solo para Visual FoxPro 9.0!' @@ -452,7 +456,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM DO CASE CASE '*' $ JUSTEXT( tc_InputFile ) OR '?' $ JUSTEXT( tc_InputFile ) IF THIS.l_ShowErrors - MESSAGEBOX( ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 60000 ) + MESSAGEBOX( ASTERISK_EXT_NOT_ALLOWED_LOC, 0+48+4096, 'FOXBIN2PRG: ERROR!!', 10000 ) ELSE ERROR ASTERISK_EXT_NOT_ALLOWED_LOC ENDIF @@ -473,7 +477,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF ENDIF - lnFileCount = ADIR( laFiles, lcFileSpec ) + lnFileCount = ADIR( laFiles, lcFileSpec, '', 1 ) IF THIS.l_ShowProgress THIS.o_Frm_Avance.nMAX_VALUE = lnFileCount @@ -489,7 +493,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM ENDIF IF FILE( lcFile ) - lnResp = THIS.Convertir( lcFile, toModulo, toEx, tlRelanzarError ) + lnResp = THIS.Convertir( lcFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) ENDIF ENDFOR @@ -506,7 +510,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.writeLog( THIS.c_Foxbin2prg_FullPath + ' - FileSpec: ' + EVL(tc_InputFile,'') ) ENDIF - lnResp = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError ) + lnResp = THIS.Convertir( tc_InputFile, toModulo, toEx, tlRelanzarError, tcOriginalFileName ) ENDIF ENDCASE @@ -531,8 +535,6 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM CD (JUSTPATH(THIS.c_CurDir)) *SET PATH TO (lcPath) ENDTRY - - RETURN lnResp ENDPROC @@ -543,108 +545,126 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM * toModulo (?@ OUT) Referencia de objeto del módulo generado (para Unit Testing) * toEx (?@ OUT) Objeto con información del error * tlRelanzarError (?v IN ) Indica si el error debe relanzarse o no + * tcOriginalFileName (v? IN ) Sirve para los casos en los que inputFile es un nombre temporal y se quiere generar + * el nombre correcto dentro de la versión texto (por ej: en los PJ2 y las cabeceras) *-------------------------------------------------------------------------------------------------------------- - LPARAMETERS tc_InputFile, toModulo, toEx AS EXCEPTION, tlRelanzarError + LPARAMETERS tc_InputFile, toModulo, toEx AS EXCEPTION, tlRelanzarError, tcOriginalFileName TRY - LOCAL lnCodError, lcErrorInfo + LOCAL lnCodError, lcErrorInfo, laDirFile(1,5), lcExtension ; + , loFSO as Scripting.FileSystemObject lnCodError = 0 - THIS.c_InputFile = FULLPATH( tc_InputFile ) - THIS.o_Conversor = NULL + + WITH THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + loFSO = THIS.o_FSO + .c_InputFile = FULLPATH( tc_InputFile ) + IF ADIR( laDirFile, .c_InputFile, '', 1 ) = 0 + ERROR 'No se encontró el archivo [' + .c_InputFile + ']' + ENDIF + .c_InputFile = loFSO.GetAbsolutePathName( FORCEPATH( laDirFile(1,1), JUSTPATH(.c_InputFile) ) ) + IF NOT EMPTY(tcOriginalFileName) + tcOriginalFileName = loFSO.GetAbsolutePathName( tcOriginalFileName ) + ENDIF + THIS.writeLog( 'c_InputFile=' + .c_InputFile ) + .o_Conversor = NULL - IF NOT FILE(THIS.c_InputFile) - ERROR C_FILE_DOESNT_EXIST_LOC + ' [' + THIS.c_InputFile + ']' - ENDIF + IF NOT FILE(.c_InputFile) + ERROR C_FILE_DOESNT_EXIST_LOC + ' [' + .c_InputFile + ']' + ENDIF - IF FILE( THIS.c_InputFile + '.ERR' ) - TRY - ERASE ( THIS.c_InputFile + '.ERR' ) - CATCH - ENDTRY - ENDIF + IF FILE( .c_InputFile + '.ERR' ) + TRY + ERASE ( .c_InputFile + '.ERR' ) + CATCH + ENDTRY + ENDIF + + lcExtension = UPPER( JUSTEXT(.c_InputFile) ) - DO CASE - CASE JUSTEXT(THIS.c_InputFile) = 'VCX' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_VC2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) + DO CASE + CASE lcExtension = 'VCX' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_VC2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_vcx_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'SCX' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_SC2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) + CASE lcExtension = 'SCX' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_SC2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_scx_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'PJX' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_PJ2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) + CASE lcExtension = 'PJX' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_PJ2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_pjx_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'FRX' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_FR2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + CASE lcExtension = 'FRX' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_FR2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'LBX' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_LB2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) + CASE lcExtension = 'LBX' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_LB2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_frx_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'DBF' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_DB2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) + CASE lcExtension = 'DBF' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_DB2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_dbf_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'DBC' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_DC2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) + CASE lcExtension = 'DBC' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_DC2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_dbc_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = 'MNX' - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, THIS.c_MN2 ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) + CASE lcExtension = 'MNX' + .c_OutputFile = FORCEEXT( .c_InputFile, .c_MN2 ) + .o_Conversor = CREATEOBJECT( 'c_conversor_mnx_a_prg' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_VC2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'VCX' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) + CASE lcExtension = .c_VC2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'VCX' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_vcx' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_SC2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'SCX' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) + CASE lcExtension = .c_SC2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'SCX' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_scx' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_PJ2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'PJX' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) + CASE lcExtension = .c_PJ2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'PJX' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_pjx' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_FR2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'FRX' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + CASE lcExtension = .c_FR2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'FRX' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_LB2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'LBX' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) + CASE lcExtension = .c_LB2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'LBX' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_frx' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_DB2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'DBF' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) + CASE lcExtension = .c_DB2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'DBF' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbf' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_DC2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'DBC' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) + CASE lcExtension = .c_DC2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'DBC' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_dbc' ) - CASE JUSTEXT(THIS.c_InputFile) = THIS.c_MN2 - THIS.c_OutputFile = FORCEEXT( THIS.c_InputFile, 'MNX' ) - THIS.o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) + CASE lcExtension = .c_MN2 + .c_OutputFile = FORCEEXT( .c_InputFile, 'MNX' ) + .o_Conversor = CREATEOBJECT( 'c_conversor_prg_a_mnx' ) - OTHERWISE - ERROR 'El archivo [' + THIS.c_InputFile + '] no está soportado' + OTHERWISE + ERROR 'El archivo [' + .c_InputFile + '] no está soportado' - ENDCASE + ENDCASE - THIS.o_Conversor.c_InputFile = THIS.c_InputFile - THIS.o_Conversor.c_OutputFile = THIS.c_OutputFile - THIS.o_Conversor.c_LogFile = THIS.c_LogFile - THIS.o_Conversor.l_Debug = THIS.l_Debug - THIS.o_Conversor.l_Test = THIS.l_Test - THIS.o_Conversor.n_FB2PRG_Version = THIS.n_FB2PRG_Version - THIS.o_Conversor.l_MethodSort_Enabled = THIS.l_MethodSort_Enabled - THIS.o_Conversor.l_PropSort_Enabled = THIS.l_PropSort_Enabled - THIS.o_Conversor.l_ReportSort_Enabled = THIS.l_ReportSort_Enabled - *-- - THIS.o_Conversor.Convertir( @toModulo ) - THIS.o_Conversor = NULL + .o_Conversor.c_InputFile = .c_InputFile + .o_Conversor.c_OutputFile = .c_OutputFile + .o_Conversor.c_LogFile = .c_LogFile + .o_Conversor.l_Debug = .l_Debug + .o_Conversor.l_Test = .l_Test + .o_Conversor.n_FB2PRG_Version = .n_FB2PRG_Version + .o_Conversor.l_MethodSort_Enabled = .l_MethodSort_Enabled + .o_Conversor.l_PropSort_Enabled = .l_PropSort_Enabled + .o_Conversor.l_ReportSort_Enabled = .l_ReportSort_Enabled + .o_Conversor.c_OriginalFileName = tcOriginalFileName + *-- + .o_Conversor.Convertir( @toModulo ) + .o_Conversor = NULL + ENDWITH && THIS AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' CATCH TO toEx lnCodError = toEx.ERRORNO @@ -662,11 +682,16 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM THIS.writeLog( lcErrorInfo ) ENDIF IF THIS.l_Debug AND THIS.l_ShowErrors - MESSAGEBOX( lcErrorInfo, 0+16+4096, 'FOXBIN2PRG: ERROR!!', 60000 ) + MESSAGEBOX( lcErrorInfo, 0+16+4096, 'FOXBIN2PRG: ERROR!!', 10000 ) ENDIF IF tlRelanzarError && Usado en Unit Testing THROW ENDIF + + FINALLY + loFSO = NULL + THIS.o_FSO = NULL + ENDTRY RETURN lnCodError @@ -799,6 +824,7 @@ DEFINE CLASS c_conversor_base AS SESSION + [] ; + [] ; + [] ; + + [] ; + [] ; + [] ; + [] ; @@ -823,6 +849,7 @@ DEFINE CLASS c_conversor_base AS SESSION l_MethodSort_Enabled = .T. l_PropSort_Enabled = .T. l_ReportSort_Enabled = .T. + c_OriginalFileName = '' ******************************************************************************************************************* @@ -1154,16 +1181,13 @@ DEFINE CLASS c_conversor_base AS SESSION THIS.writeLog( C_BACKUP_OF_LOC + FORCEEXT(THIS.c_OutputFile,lcExt_1) + '/' + lcExt_2 + '/' + lcExt_3 ) ENDIF - *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_1 + lcNext_Bak) ) RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_1) ) TO ( tcBakFile_1 ) IF NOT EMPTY(lcExt_2) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) - *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_2 + lcNext_Bak) ) RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_2) ) TO ( tcBakFile_2 ) ENDIF IF NOT EMPTY(lcExt_3) AND FILE( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) - *COPY FILE ( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) TO ( FORCEEXT(THIS.c_OutputFile, lcExt_3 + lcNext_Bak) ) RENAME ( FORCEEXT(THIS.c_OutputFile, lcExt_3) ) TO ( tcBakFile_3 ) ENDIF ENDIF @@ -7107,7 +7131,7 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base * (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!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- - <> Version="<>" SourceFile="<>" Generated="<>" <> (Para binarios Visual FoxPro 9.0 solamente) + <> Version="<>" SourceFile="<>" Generated="<>" <> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * ENDTEXT ENDPROC @@ -7893,19 +7917,6 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg #ENDIF - PROCEDURE write_PROGRAM_HEADER - *-- Cabecera del PRG e inicio de DEF_CLASS - TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2 - *-------------------------------------------------------------------------------------------------------------------------------------------------------- - * (ES) AUTOGENERADO - PARA MANTENER INFORMACIÓN DE SERVIDORES DLL USAR "FOXBIN2PRG", SI NO IMPORTAN, EJECUTAR DIRECTAMENTE PARA REGENERAR EL PROYECTO. - * (EN) AUTOGENERATED - TO KEEP DLL SERVER INFORMATION USE "FOXBIN2PRG", OTHERWISE YOU CAN EXECUTE DIRECTLY TO REGENERATE PROJECT. - *-------------------------------------------------------------------------------------------------------------------------------------------------------- - <> Version="<>" SourceFile="<>" Generated="<>" <> (Para binarios Visual FoxPro 9.0 solamente) - * - ENDTEXT - ENDPROC - - PROCEDURE Convertir *--------------------------------------------------------------------------------------------------- * PARÁMETROS: !=Obligatorio, ?=Opcional, @=Pasar por referencia, v=Pasar por valor (IN/OUT) @@ -7967,9 +7978,6 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg loReg.NAME = LOWER( ALLTRIM( loReg.NAME, 0, ' ', CHR(0) ) ) loReg.COMMENTS = CHRTRAN( ALLTRIM( loReg.COMMENTS, 0, ' ', CHR(0) ), ['], ["] ) - - *-- TIP: Por algún motivo el NAME puede estar vacío. Asigno uno temporal que muestre el error. - loReg.NAME = EVL(loReg.NAME, 'BadName_FixIt') TRY loProject.ADD( loReg, loReg.NAME ) @@ -8013,7 +8021,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg ENDFOR <<>> STRTOFILE( '', '__newproject.f2b' ) - BUILD PROJECT <> FROM '__newproject.f2b' + BUILD PROJECT <> FROM '__newproject.f2b' ENDTEXT @@ -8023,9 +8031,9 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg <<>> loProj.Close() ENDFOR <<>> - MODIFY PROJECT '<>' NOWAIT NOSHOW NOPROJECTHOOK + MODIFY PROJECT '<>' NOWAIT NOSHOW NOPROJECTHOOK <<>> - loProject = _VFP.Projects('<>') + loProject = _VFP.Projects('<>') <<>> WITH loProject.FILES ENDTEXT @@ -8149,7 +8157,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg * _VFP.Projects('<>').FILES('__newproject.f2b').Remove() TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> - _VFP.Projects('<>').Close() + _VFP.Projects('<>').Close() ENDTEXT *-- Restauro Directorio de inicio