From 82f58c886d6261ef255e2c34e20dcba3be3e1dc0 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Sat, 6 Feb 2016 16:12:20 +0100 Subject: [PATCH] =?UTF-8?q?Preview=206:=20-=20Bug=20Frx/Lbx:=20Cuando=20se?= =?UTF-8?q?=20regeneran=20reportes=20o=20etiquetas=20con=20textos=20multil?= =?UTF-8?q?inea=20alineados=20al=20centro=20o=20a=20la=20derecha,=20la=20a?= =?UTF-8?q?lineaci=C3=B3n=20no=20es=20completamente=20correcta=20(Ryan=20H?= =?UTF-8?q?arris)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FoxBin2PRGVersionFile.txt | 5 +- foxbin2prg.exe | Bin 605556 -> 606907 bytes foxbin2prg.pjt | Bin 784566 -> 784894 bytes foxbin2prg.pjx | Bin 9903 -> 9903 bytes foxbin2prg.prg | 166 +++++++++++++++++++++++++++++++------- 5 files changed, 141 insertions(+), 30 deletions(-) diff --git a/FoxBin2PRGVersionFile.txt b/FoxBin2PRGVersionFile.txt index 5ca3ac7..5d5ffd3 100644 --- a/FoxBin2PRGVersionFile.txt +++ b/FoxBin2PRGVersionFile.txt @@ -3,7 +3,7 @@ Lparameters toUpdateInfo Local lcNote With toUpdateInfo .VersionNumber = 'v1.19.46' - .VersionDate = Date(2015,09,15) + .VersionDate = Date(2015,09,18) .SourceFileUrl = 'http://vfpxrepository.com/dl/thorupdate/Projects/FoxBin2Prg/FoxBin2Prg.Zip' .Link = 'http://vfpx.codeplex.com/wikipage?title=FoxBin2PRG' @@ -17,7 +17,7 @@ Demo video using FoxBin2Prg with PlasticSCM: http://youtu.be/sE4wQ50Itqg Change History ------------------------------------------------------------- -2015/09/15 v1.19.46 +2015/09/18 v1.19.46 - Bug Fix: set_UserValue() method causes error when trying to get information about another error and the VFP binary table can not be opened (ie, because corrupted memo) - Feature: Added internal support for querying directory cfg information, with a new optional parameter, for API methods that require it (ie: get_Ext2FromExt, hasSupport*) - Feature: Convert FUNCTION to PROCEDURE for maintaining compatibility with the way that VFP save methods on binaries @@ -27,6 +27,7 @@ Change History ------------------------------------------------------------- - Bug Fix fb2p_diff: When calling fb2p_diff.exe from a directory out of FoxBin2Prg dir, an error is thrown because FoxBin2Prg is not found (Mike Potjer) - Feature: In some environments and under some conditions WSscript.Shell object can cause problems, so now it's replaced with Win32 native functions (Aurélien Dellieux) - Bug Fix frx/lbx: Ordering of report objects changes the ZOrder of near objects that can overlap, which can cause bad visualization and printing (Ryan Harris) +- Bug Fix frx/lbx: When regenerating reports or labels with multiline texts center or right aligned, alignment is not completely right (Ryan Harris) 2015/06/21 v1.19.45 diff --git a/foxbin2prg.exe b/foxbin2prg.exe index 49641a1f8830d3cc23182dded2c19216f61b4705..e333de2913bcceaea420afebb45244da01452ad5 100644 GIT binary patch delta 19264 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 delta 16737 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 diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx index 33e3b5e3810eb70472352cbae4ff33eddb1a8b5a..227a148df9ab5a457b05684c1d934b543d0fa221 100644 GIT binary patch delta 27 hcmZ4QyWV%hJ{A^3GegVGhgjN}fGh)}%|7hO@&Jh%2$lc< delta 27 jcmZ4QyWV%hJ{A@OV-v&8hgjN}SPYCTj5qtRC(8o>h?xkH diff --git a/foxbin2prg.prg b/foxbin2prg.prg index 3628763..e149758 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -176,6 +176,7 @@ * 01/09/2015 FDBOZZO v1.19.46 Bug Fix mnx: Cuando se usa '&&' en los textos de las opciones, se corrompe el binario del menú al regenerarlo (Walter Nichols) * 14/09/2015 FDBOZZO v1.19.45 Mejora: El objeto WSscript.Shell da problemas en algunos entornos o bajo ciertas condiciones, por lo que se reemplaza por llamadas Win32 nativas (Aurélien Dellieux) * 15/09/2015 FDBOZZO v1.19.45 Bug Fix Frx/Lbx : El ordenamiento de registros de los reportes cambia el orden Z de los objetos próximos que se solapan, pudiendo causar que se visualicen mal (Ryan Harris) +* 18/09/2015 FDBOZZO v1.19.45 Bug Frx/Lbx: Cuando se regeneran reportes o etiquetas con textos multilinea alineados al centro o a la derecha, la alineación no es completamente correcta (Ryan Harris) * * *--------------------------------------------------------------------------------------------------- @@ -270,6 +271,7 @@ * 28/08/2015 Walter Nicholls Reporte Bug: Cuando se usa '&&' en los textos de las opciones, se corrompe el binario del menú al regenerarlo (Arreglado en v1.19.46) * 09/09/2015 Aurélien Dellieux Mejora v1.19.45: El objeto WSscript.Shell da problemas en algunos entornos o bajo ciertas condiciones (Cambiado en v1.19.46) * 11/09/2015 Ryan Harris Reporte Bug Frx/Lbx v1.19.45: El ordenamiento de registros de los reportes cambia el orden Z de los objetos próximos que se solapan, pudiendo causar que se visualicen mal (Arreglado en v1.19.46) +* 17/09/2015 Ryan Harris Reporte Bug Frx/Lbx v1.19.45: Cuando se regeneran reportes o etiquetas con textos multilinea alineados al centro o a la derecha, la alineación no es completamente correcta (Arreglado en v1.19.46) * * *--------------------------------------------------------------------------------------------------- @@ -536,11 +538,22 @@ IF ATC('-BIN2PRG','-'+tc_InputFile) > 0 OR ATC('-PRG2BIN','-'+tc_InputFile) > 0 RELEASE pcParamX ENDIF -loCnv = CREATEOBJECT("c_foxbin2prg") -loEx = NULL -lnResp = loCnv.execute( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; - , tcDontShowProgress, NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ; - , .F., .F., .F., tcCFG_File ) +TRY + loEx = NULL + loCnv = CREATEOBJECT("c_foxbin2prg") + lnResp = loCnv.execute( tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug ; + , tcDontShowProgress, NULL, @loEx, .F., tcOriginalFileName, tcRecompile, tcNoTimestamps ; + , .F., .F., .F., tcCFG_File ) +CATCH TO loEx + *-- Esto solo es para errores en el INIT, ya que los demás se deben capturar y tratar antes. + lnResp = loEx.ErrorNo + MESSAGEBOX( 'Error ' + TRANSFORM(loEx.ErrorNo) + ', ' + loEx.Message + C_CR ; + + loEx.Procedure + ', Line ' + TRANSFORM(loEx.LineNo) + C_CR ; + + loEx.Details ; + , 0+16+4096 ; + , '' ; + , 60000 ) +ENDTRY ADDPROPERTY(_SCREEN, 'ExitCode', lnResp) *SET COVERAGE TO @@ -819,7 +832,12 @@ DEFINE CLASS c_foxbin2prg AS Session THIS.declareDLL() IF ADIR(laDir, THIS.c_ErrorLogFile) > 0 THEN - ERASE (THIS.c_ErrorLogFile + '.BAK') + IF ADIR(laDir, THIS.c_ErrorLogFile + '.BAK') > 0 THEN + THIS.changeFileAttribute( THIS.c_ErrorLogFile + '.BAK', '-R-S-H' ) + ERASE (THIS.c_ErrorLogFile + '.BAK') + ENDIF + + THIS.changeFileAttribute( THIS.c_ErrorLogFile, '-R-S-H' ) RENAME (THIS.c_ErrorLogFile) TO (THIS.c_ErrorLogFile + '.BAK') ENDIF @@ -4535,7 +4553,7 @@ DEFINE CLASS c_foxbin2prg AS Session * ? WScriptShell_Run("c:\windows\system32\cmd.exe /c dir c:\*.* > \temp\dir.txt") LOCAL lnWfSO, ln_dwFlags, ln_wShowWindow, lcStartInfo, lcProcessInfo, ln_hProcess, ln_hThread ; - , lnExitCode, ln_dwProcessId, ln_dwThreadId, tcProgFile + , lnExitCode, ln_dwProcessId, ln_dwThreadId, tcProgFile, laDirFile(1,5) TRY DECLARE SHORT CreateProcess IN WIN32API ; @@ -4553,9 +4571,19 @@ DEFINE CLASS c_foxbin2prg AS Session DECLARE LONG WaitForSingleObject IN WIN32API INTEGER hHandle, LONG dwMilliseconds DECLARE INTEGER GetExitCodeProcess IN WIN32API INTEGER ln_hProcess, INTEGER @ lnExitCode DECLARE INTEGER CloseHandle IN kernel32.DLL INTEGER hObject + *DECLARE INTEGER ShellExecuteEx IN Shell32 STRING @lpExecInfo + DECLARE LONG ShellExecuteEx IN shell32.DLL STRING @ + DECLARE LONG HeapAlloc IN WIN32API LONG, LONG, LONG + DECLARE LONG HeapFree IN WIN32API LONG, LONG, LONG + DECLARE LONG GetProcessHeap IN WIN32API + *DECLARE LONG WaitForSingleObject IN WIN32API LONG, LONG + DECLARE LONG TerminateProcess IN WIN32API LONG, LONG * NOTA: Las constantes para VFP se pueden consultar en http://www.news2news.com/vfp/w32constants.php + #DEFINE SEE_MASK_NOCLOSEPROCESS 0x00000040 + #DEFINE WAIT_MILLISECOND 3000 + #DEFINE SW_SHOW 5 #DEFINE STILL_ACTIVE 0x103 #DEFINE cnINFINITE 0xFFFFFFFF @@ -4623,33 +4651,109 @@ DEFINE CLASS c_foxbin2prg AS Session * DOCUMENTACIÓN estructura _PROCESS_INFORMATION: * https://msdn.microsoft.com/en-us/library/windows/desktop/ms684873%28v=vs.85%29.aspx - *!* typedef struct _PROCESS_INFORMATION { - *!* HANDLE hProcess; - *!* HANDLE hThread; - *!* DWORD dwProcessId; - *!* DWORD dwThreadId; - *!* } PROCESS_INFORMATION; + * typedef struct _PROCESS_INFORMATION { + * HANDLE hProcess; + * HANDLE hThread; + * DWORD dwProcessId; + * DWORD dwThreadId; + * } PROCESS_INFORMATION; * IF CreateProcess( tcProgFile, tcCmdLine,0,0,0,0,0,0, lcStartInfo, @lcProcessInfo ) = 0 - IF tlDebug - ? "Could not create process" + + *-- Segundo intento: Si se definió un archivo (ej: un TXT,LOG,etc) intento lanzarlo + *-- con la aplicación predeterminada + IF ADIR(laDirFile, tcCmdLine) = 1 THEN + LOCAL lcInfo, lnHeap, lnLen, lnPtr + + *-- Ejemplo adaptado de: http://www.foxite.com/archives/0000316611.htm + lnLen = LEN(tcCmdLine) + 1 + lnHeap = GetProcessHeap() + lnPtr = HeapAlloc(lnHeap, 0x8, 5 + lnLen) + SYS(2600, lnPtr, 5, [open] + CHR(0)) + SYS(2600, lnPtr+5, lnLen, tcCmdLine + CHR(0)) + + * DOCUMENTACIÓN estructura _SHELLEXECUTEINFO: + * https://msdn.microsoft.com/en-us/library/windows/desktop/bb759784%28v=vs.85%29.aspx + *typedef struct _SHELLEXECUTEINFO { + * DWORD cbSize; 4 + * ULONG fMask; 4 + * HWND hwnd; 4 + * LPCTSTR lpVerb; 4 + * LPCTSTR lpFile; 4 + * LPCTSTR lpParameters; 4 + * LPCTSTR lpDirectory; 4 + * int nShow; 4 + * HINSTANCE hInstApp; 4 + * LPVOID lpIDList; 4 + * LPCTSTR lpClass; 4 + * HKEY hkeyClass; 4 + * DWORD dwHotKey; 4 + * union { + * HANDLE hIcon; + * HANDLE hMonitor; + * } DUMMYUNIONNAME; 4 + * HANDLE hProcess; 4 + *} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO; + * + + lcInfo = ; + BINTOC(60, [4RS]) + ; + BINTOC(SEE_MASK_NOCLOSEPROCESS, [4RS]) + ; + BINTOC(0, [4RS]) + ; + BINTOC(lnPtr, [4RS]) + ; + BINTOC(lnPtr+5, [4RS]) + ; + BINTOC(0, [4RS]) + ; + BINTOC(0, [4RS]) + ; + BINTOC(1, [4RS]) + ; + REPLICATE(CHR(0), 28) + + IF ShellExecuteEx(@lcInfo) = 0 + IF tlDebug + ? "Could not call process" + ENDIF + lnExitCode = -1 + EXIT + ELSE + HeapFree(lnHeap, 0, lnPtr) + ln_hProcess = CTOBIN(RIGHT(lcInfo, 4), [4RS]) + ln_hThread = 0 + + IF tlDebug + ? "Process handle = "+TRANSFORM(ln_hProcess) + ? "Thread handle = "+TRANSFORM(ln_hThread) + ENDIF + + *IF lnProcess != 0 + * WaitForSingleObject(ln_hProcess, WAIT_MILLISECOND) + * IF tlDebug + * ? "Terminating process!" + * ENDIF + * TerminateProcess(ln_hProcess, 0) + *ENDIF + ENDIF + + ELSE + IF tlDebug + ? "Could not create process" + ENDIF + lnExitCode = -1 + EXIT ENDIF - lnExitCode = -1 - EXIT - ENDIF + ELSE - * Process and thread handles returned in ProcInfo structure - ln_hProcess = CTOBIN( LEFT( lcProcessInfo, 4 ), '4RS' ) - ln_hThread = CTOBIN( SUBSTR( lcProcessInfo, 5, 4 ), '4RS' ) - ln_dwProcessId = CTOBIN( SUBSTR( lcProcessInfo, 9, 4 ), '4RS' ) - ln_dwThreadId = CTOBIN( SUBSTR( lcProcessInfo, 13, 4 ), '4RS' ) + * Process and thread handles returned in ProcInfo structure + ln_hProcess = CTOBIN( LEFT( lcProcessInfo, 4 ), '4RS' ) + ln_hThread = CTOBIN( SUBSTR( lcProcessInfo, 5, 4 ), '4RS' ) + ln_dwProcessId = CTOBIN( SUBSTR( lcProcessInfo, 9, 4 ), '4RS' ) + ln_dwThreadId = CTOBIN( SUBSTR( lcProcessInfo, 13, 4 ), '4RS' ) - IF tlDebug - ? "Process handle = "+TRANSFORM(ln_hProcess) - ? "Thread handle = "+TRANSFORM(ln_hThread) - ? "Process handle id = "+TRANSFORM(ln_dwProcessId) - ? "Thread handle id = "+TRANSFORM(ln_dwThreadId) + IF tlDebug + ? "Process handle = "+TRANSFORM(ln_hProcess) + ? "Thread handle = "+TRANSFORM(ln_hThread) + ? "Process handle id = "+TRANSFORM(ln_dwProcessId) + ? "Thread handle id = "+TRANSFORM(ln_dwThreadId) + ENDIF ENDIF IF tbWaitOnReturn THEN @@ -11540,6 +11644,12 @@ DEFINE CLASS c_conversor_prg_a_frx AS c_conversor_prg_a_bin IF C_DATA_F $ tcLine && Fin del valor lcValue = lcValue + CR_LF + STREXTRACT( tcLine, '', C_DATA_F ) + + *-- Ajustes: En los labels, no se usa CR+LF, sino que se usa solo CR + IF toReg.objType = "5" THEN + lcValue = STRTRAN(lcValue, CR_LF, C_CR) + ENDIF + ADDPROPERTY( toReg, tcPropName, lcValue ) EXIT