diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 73179d5..5d4a33e 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -14706,6 +14706,10 @@ ENDDEFINE DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg + _MEMBERDATA = [] ; + + [] ; + + [] + #IF .F. LOCAL THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' #ENDIF @@ -14726,7 +14730,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) TRY - LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; + LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lnLen ; , loEx AS EXCEPTION ; , loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' ; , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ; @@ -14737,86 +14741,11 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg WITH THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' IF toFoxBin2Prg.l_ProcessFiles THEN - USE (.c_InputFile) SHARED AGAIN NOUPDATE ALIAS _TABLAORIG - SELECT * FROM _TABLAORIG INTO CURSOR TABLABIN - USE IN (SELECT("_TABLAORIG")) - - loServerHead = CREATEOBJECT('CL_PROJ_SRV_HEAD') - .updateProgressbar( 'Processing Project ' + '...', 1, 2, 1 ) - - - *-- Obtengo los archivos del proyecto - loProject = CREATEOBJECT('CL_PROJECT') - SCATTER MEMO NAME loReg - - IF toFoxBin2Prg.l_NoTimestamps - loReg.TIMESTAMP = 0 - ENDIF - IF toFoxBin2Prg.l_ClearUniqueID - loReg.ID = 0 - ENDIF - - loProject._HomeDir = ['] + ALLTRIM( .get_ValueFromNullTerminatedValue( loReg.HOMEDIR ) ) + ['] - - loProject._ServerInfo = loReg.RESERVED2 - loProject._Debug = loReg.DEBUG - loProject._Encrypted = loReg.ENCRYPT - lcDevInfo = loReg.DEVINFO - - - *--- Ubico el programa principal - LOCATE FOR MAINPROG - - IF FOUND() - loProject._MainProg = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( NAME ) ) ) - ENDIF - - - *-- Ubico el Project Hook - LOCATE FOR TYPE == 'W' - - IF FOUND() - loProject._ProjectHookLibrary = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( NAME ) ) ) - loProject._ProjectHookClass = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( RESERVED1 ) ) ) - ENDIF - - - *-- Ubico el icono del proyecto - LOCATE FOR TYPE == 'i' - - IF FOUND() - loProject._Icon = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( NAME ) ) ) - ENDIF - - - *-- Escaneo el proyecto - SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' ) - loReg = NULL - SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg - - IF toFoxBin2Prg.l_NoTimestamps - loReg.TIMESTAMP = 0 - ENDIF - IF toFoxBin2Prg.l_ClearUniqueID - loReg.ID = 0 - ENDIF - - loReg.NAME = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( loReg.NAME ) ) ) - loReg.COMMENTS = ALLTRIM( .get_ValueFromNullTerminatedValue( loReg.COMMENTS ) ) - - *-- TIP: Si el "Name" del objeto está vacío, lo salteo - IF EMPTY(loReg.NAME) - LOOP - ENDIF - - TRY - loProject.ADD( loReg, loReg.NAME ) - CATCH TO loEx WHEN loEx.ERRORNO = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) - *-- Saltear y no agregar el archivo duplicado / Bypass and not add the duplicated file - ENDTRY - ENDSCAN - + .loadFile( @toModulo, @toEx, @toFoxBin2Prg, @loProject ) + .updateProgressbar( 'Processing Project info...', 2, 3, 1 ) + loServerHead = loProject._ServerHead + C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER() @@ -14831,15 +14760,12 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Información del programa - loProject.parseDeviceInfo( lcDevInfo ) C_FB2PRG_CODE = C_FB2PRG_CODE + loProject.getFormattedDeviceInfoText() + CR_LF *-- Información de los Servidores definidos IF NOT EMPTY(loProject._ServerInfo) - loServerHead.parseServerInfo( loProject._ServerInfo ) C_FB2PRG_CODE = C_FB2PRG_CODE + loServerHead.getFormattedServerText() + CR_LF - loServerHead = NULL ENDIF @@ -14908,9 +14834,6 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg FOR EACH loReg IN loProject &&FOXOBJECT IF NOT EMPTY(loReg.COMMENTS) - *TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 - * <<>> .ITEM(lcCurdir + '<>').Description = '<>' - *ENDTEXT C_FB2PRG_CODE = C_FB2PRG_CODE + CHR(13) + CHR(10) + CHR(9) + ".ITEM(lcCurdir + '" + loReg.NAME + "').Description = '" + loReg.COMMENTS + "'" ENDIF loReg = NULL @@ -14987,7 +14910,6 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Build y cierre - * _VFP.Projects('<>').FILES('__newproject.f2b').Remove() TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2 <<>> _VFP.Projects('<>').Close() @@ -15018,7 +14940,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg *-- Genero el PJ2 - .updateProgressbar( 'Writing ' + toFoxBin2Prg.c_PJ2 + '...', 2, 2, 1 ) + .updateProgressbar( 'Writing ' + toFoxBin2Prg.c_PJ2 + '...', 3, 3, 1 ) IF .l_Test toModulo = C_FB2PRG_CODE @@ -15028,6 +14950,147 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg ENDWITH && THIS + CATCH TO toEx + THIS.set_UserValue(@toEx) + + lnCodError = toEx.ERRORNO + + DO CASE + CASE lnCodError = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) + toEx.USERVALUE = toEx.USERVALUE + loLang.C_DUPLICATED_FILE_LOC + ': ' + loReg.NAME + ENDCASE + + IF THIS.n_Debug > 0 AND _VFP.STARTMODE = 0 + SET STEP ON + ENDIF + + THROW + + FINALLY + USE IN (SELECT("TABLABIN")) + STORE NULL TO loProject, loReg, loServerHead, loServerData + RELEASE toModulo, toEx, toFoxBin2Prg ; + , lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lnLen ; + , loProject, loServerHead, loServerData + + ENDTRY + + RETURN + ENDPROC + + + PROCEDURE loadFile + *--------------------------------------------------------------------------------------------------- + * PARÁMETROS: (v=Pasar por valor | @=Pasar por referencia) (!=Obligatorio | ?=Opcional) (IN/OUT) + * toModulo (!@ OUT) Objeto generado de clase CL_PROJECT con la información leida del texto + * toEx (!@ OUT) Objeto con información del error + * toFoxBin2Prg (v! IN ) Referencia al objeto principal + *--------------------------------------------------------------------------------------------------- + LPARAMETERS toModulo, toEx AS EXCEPTION, toFoxBin2Prg, toProject + #IF .F. + LOCAL toFoxBin2Prg AS c_foxbin2prg OF 'FOXBIN2PRG.PRG' + LOCAL toProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' + #ENDIF + DODEFAULT( @toModulo, @toEx, @toFoxBin2Prg ) + + TRY + LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lnLen ; + , loEx AS EXCEPTION ; + , loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' ; + , loServerHead AS CL_PROJ_SRV_HEAD OF 'FOXBIN2PRG.PRG' ; + , loServerData AS CL_PROJ_SRV_DATA OF 'FOXBIN2PRG.PRG' + LOCAL loLang as CL_LANG OF 'FOXBIN2PRG.PRG' + loLang = _SCREEN.o_FoxBin2Prg_Lang + STORE NULL TO loProject, loReg, loServerHead, loServerData + + WITH THIS AS c_conversor_pjx_a_prg OF 'FOXBIN2PRG.PRG' + USE (.c_InputFile) SHARED AGAIN NOUPDATE ALIAS _TABLAORIG + SELECT * FROM _TABLAORIG INTO CURSOR TABLABIN + USE IN (SELECT("_TABLAORIG")) + + .updateProgressbar( 'Loading Project info...', 1, 3, 1 ) + + + *-- Obtengo los archivos del proyecto + loProject = CREATEOBJECT('CL_PROJECT') + toProject = loProject + loServerHead = loProject._ServerHead + SCATTER MEMO NAME loReg + + IF toFoxBin2Prg.l_NoTimestamps + loReg.TIMESTAMP = 0 + ENDIF + IF toFoxBin2Prg.l_ClearUniqueID + loReg.ID = 0 + ENDIF + + loProject._HomeDir = ['] + ALLTRIM( .get_ValueFromNullTerminatedValue( loReg.HOMEDIR ) ) + ['] + loProject._ServerInfo = loReg.RESERVED2 + loProject._Debug = loReg.DEBUG + loProject._Encrypted = loReg.ENCRYPT + loProject.parseDeviceInfo( loReg.DEVINFO ) + + *-- Información de los Servidores definidos + IF NOT EMPTY(loProject._ServerInfo) + loServerHead.parseServerInfo( loProject._ServerInfo ) + loServerHead = NULL + ENDIF + + + *--- Ubico el programa principal + LOCATE FOR MAINPROG + + IF FOUND() + loProject._MainProg = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( NAME ) ) ) + ENDIF + + + *-- Ubico el Project Hook + LOCATE FOR TYPE == 'W' + + IF FOUND() + loProject._ProjectHookLibrary = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( NAME ) ) ) + loProject._ProjectHookClass = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( RESERVED1 ) ) ) + ENDIF + + + *-- Ubico el icono del proyecto + LOCATE FOR TYPE == 'i' + + IF FOUND() + loProject._Icon = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( NAME ) ) ) + ENDIF + + + *-- Escaneo el proyecto + SCAN ALL FOR NOT INLIST(TYPE, 'H','W','i' ) + loReg = NULL + SCATTER FIELDS NAME,TYPE,EXCLUDE,COMMENTS,CPID,TIMESTAMP,ID,OBJREV MEMO NAME loReg + + IF toFoxBin2Prg.l_NoTimestamps + loReg.TIMESTAMP = 0 + ENDIF + IF toFoxBin2Prg.l_ClearUniqueID + loReg.ID = 0 + ENDIF + + loReg.NAME = LOWER( ALLTRIM( .get_ValueFromNullTerminatedValue( loReg.NAME ) ) ) + loReg.COMMENTS = ALLTRIM( .get_ValueFromNullTerminatedValue( loReg.COMMENTS ) ) + + *-- TIP: Si el "Name" del objeto está vacío, lo salteo + IF EMPTY(loReg.NAME) + LOOP + ENDIF + + TRY + loProject.ADD( loReg, loReg.NAME ) + CATCH TO loEx WHEN loEx.ERRORNO = 2062 && The specified key already exists ==> loProject.ADD( loReg, loReg.NAME ) + *-- Saltear y no agregar el archivo duplicado / Bypass and not add the duplicated file + ENDTRY + ENDSCAN + ENDWITH && THIS + + CATCH TO toEx THIS.set_UserValue(@toEx) @@ -15049,7 +15112,7 @@ DEFINE CLASS c_conversor_pjx_a_prg AS c_conversor_bin_a_prg USE IN (SELECT("TABLABIN")) STORE NULL TO loProject, loReg, loServerHead, loServerData RELEASE toModulo, toEx, toFoxBin2Prg ; - , lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; + , lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lnLen ; , loProject, loServerHead, loServerData ENDTRY @@ -15085,7 +15148,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg TRY IF toFoxBin2Prg.l_ProcessFiles THEN - LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; + LOCAL lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lnLen ; , lcStrPJM, laLines(1), laProps(1) ; , loEx AS EXCEPTION ; , loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' ; @@ -15096,12 +15159,12 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg loLang = _SCREEN.o_FoxBin2Prg_Lang STORE NULL TO loProject, loReg, loServerHead, loServerData lcStrPJM = FILETOSTR( THIS.c_InputFile ) - loServerHead = CREATEOBJECT('CL_PROJ_SRV_HEAD') THIS.updateProgressbar( 'Scanning PJM...', 1, 2, 1 ) *-- Obtengo los archivos del proyecto loProject = CREATEOBJECT('CL_PROJECT') + loServerHead = loProject._ServerHead WITH loProject AS CL_PROJECT OF 'FOXBIN2PRG.PRG' *-- Proj.Info @@ -15156,7 +15219,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg ENDWITH ELSE - loServerData = CREATEOBJECT("CL_PROJ_SRV_DATA") + loServerData = loServerHead.getServerDataObject() WITH loServerData AS CL_PROJ_SRV_DATA OF 'FOXBIN2PRG.PRG' ._HelpContextID = laProps(4) @@ -15444,7 +15507,7 @@ DEFINE CLASS c_conversor_pjm_a_prg AS c_conversor_bin_a_prg *USE IN (SELECT("TABLABIN")) STORE NULL TO loProject, loReg, loServerHead, loServerData RELEASE toModulo, toEx, toFoxBin2Prg ; - , lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lcDevInfo, lnLen ; + , lnCodError, lcStr, lnPos, lnLen, lnServerCount, loReg, lnLen ; , lcStrPJM, laLines, laProps, loProject, loServerHead, loServerData ENDTRY