Replace Scripting.FileSystemObject MoveFile with Win32API equivalent
This commit is contained in:
@@ -25,7 +25,7 @@ _LegalCopyright = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa):
|
||||
_LegalTrademark = "Creative Commons 4: Reconocimiento - CompartirIgual (by-sa): http://creativecommons.org/licenses/by/4.0/"
|
||||
_ProductName = "FILENAME_CAPS"
|
||||
_MajorVer = "2"
|
||||
_MinorVer = "3"
|
||||
_MinorVer = "4"
|
||||
_Revision = "0"
|
||||
_LanguageID = ""
|
||||
_AutoIncrement = "0"
|
||||
@@ -33,7 +33,7 @@ _AutoIncrement = "0"
|
||||
|
||||
|
||||
*<BuildProj>
|
||||
*<.HomeDir = 'c:\desa\filename_caps' />
|
||||
*<.HomeDir = 'c:\desa\foxbin2prg\filename_caps' />
|
||||
|
||||
FOR EACH loProject IN _VFP.Projects FOXOBJECT
|
||||
loProject.Close()
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -45,19 +45,34 @@ RETURN lcFileName
|
||||
|
||||
DEFINE CLASS cl_FileName_Caps AS Custom
|
||||
|
||||
PROCEDURE INIT
|
||||
DECLARE INTEGER MoveFile IN KERNEL32.DLL STRING lpExistingFileName, STRING lpNewFileName
|
||||
DECLARE INTEGER GetLastError IN KERNEL32.DLL
|
||||
|
||||
* DOCUMENTACI<43>N: https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx
|
||||
DECLARE INTEGER FormatMessage IN KERNEL32.DLL INTEGER dwFlags, INTEGER lpSource, INTEGER dwMessageId ;
|
||||
, INTEGER dwLanguageId, STRING @lpBuffer, INTEGER nSize, INTEGER Arguments
|
||||
_SCREEN.AddProperty("ExitCodeFNC",0)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Capitalize
|
||||
LPARAMETERS tcFileName, tcFileMask, tcFileMaskType, tcLog, tlRelanzarError, tcDontShowErrors
|
||||
|
||||
TRY
|
||||
LOCAL loEx AS EXCEPTION, laMasks(1,4), lcDefinition, lcFileDef, lcMaskDef, laLines(1), lcMenErr ;
|
||||
, I, X, lcName, lcExt, lcPath, lcFileName, laFile(1,5), lcLogFile, lcSys16, lnPosProg ;
|
||||
, loFSO AS Scripting.FileSystemObject
|
||||
, I, X, lcName, lcExt, lcPath, lcFileName, laFile(1,5), lcLogFile, lcSys16, lnPosProg, lnRet
|
||||
|
||||
lnRet = 0
|
||||
loEx = NULL
|
||||
loFSO = CREATEOBJECT('Scripting.FileSystemObject')
|
||||
tcFileMaskType = EVL(tcFileMaskType,'M')
|
||||
lcFileName = tcFileName
|
||||
lcLogFile = FORCEEXT(SYS(16),'LOG')
|
||||
lcSys16 = SYS(16)
|
||||
IF LEFT(lcSys16,10) == 'PROCEDURE '
|
||||
lnPosProg = AT(" ", lcSys16, 2) + 1
|
||||
ELSE
|
||||
lnPosProg = 1
|
||||
ENDIF
|
||||
lcLogFile = FORCEEXT( SUBSTR( lcSys16, lnPosProg ), 'LOG' )
|
||||
tcLog = ''
|
||||
tcDontShowErrors = EVL( tcDontShowErrors, '0' )
|
||||
|
||||
@@ -66,13 +81,6 @@ DEFINE CLASS cl_FileName_Caps AS Custom
|
||||
tcLog = tcLog + CR_LF + '- No hay m<>scara definida ni archivo de configuraci<63>n'
|
||||
EXIT && No se indic<69> nada que hacer
|
||||
ELSE
|
||||
lcSys16 = SYS(16)
|
||||
IF LEFT(lcSys16,10) == 'PROCEDURE '
|
||||
lnPosProg = AT(" ", lcSys16, 2) + 1
|
||||
ELSE
|
||||
lnPosProg = 1
|
||||
ENDIF
|
||||
|
||||
tcFileMask = FORCEEXT( SUBSTR( lcSys16, lnPosProg ), 'CFG' )
|
||||
tcLog = tcLog + CR_LF + '- Se usar<61> el archivo de configuraci<63>n [' + tcFileMask + ']'
|
||||
IF NOT FILE(tcFileMask)
|
||||
@@ -164,8 +172,18 @@ DEFINE CLASS cl_FileName_Caps AS Custom
|
||||
ENDIF
|
||||
ENDFOR
|
||||
|
||||
*MESSAGEBOX( 'lcLogFile = ' + TRANSFORM(lcLogFile),0+4096, 'Error' )
|
||||
|
||||
IF ADIR( laFile, lcFileName, '', 1 ) > 0 AND laFile(1,1) <> JUSTFNAME(lcFileName)
|
||||
loFSO.MoveFile( FORCEPATH( laFile(1,1), JUSTPATH(lcFileName) ), lcFileName )
|
||||
lnRet = MoveFile( FORCEPATH( laFile(1,1), JUSTPATH(lcFileName) ), lcFileName )
|
||||
*MESSAGEBOX('(MoveFile) lnRet = ' + TRANSFORM(lnRet),0+4096, 'Error')
|
||||
|
||||
IF lnRet = 0 && Failed
|
||||
lnRet = GetLastError()
|
||||
*MESSAGEBOX('(GetLastError) lnRet = ' + TRANSFORM(lnRet),0+4096, 'Error')
|
||||
ERROR 'MoveFile'
|
||||
ENDIF
|
||||
|
||||
tcLog = tcLog + CR_LF + ' => Se renombrar<61> a [' + lcFileName + ']'
|
||||
ELSE
|
||||
tcLog = tcLog + CR_LF + ' => No se renombrar<61> a [' + lcFileName + '] porque ya estaba correcto.'
|
||||
@@ -173,6 +191,19 @@ DEFINE CLASS cl_FileName_Caps AS Custom
|
||||
|
||||
|
||||
CATCH TO loEx
|
||||
_SCREEN.ExitCodeFNC = loEx.ErrorNo
|
||||
|
||||
IF loEx.ErrorNo = 1098 && User defined error
|
||||
IF LOWER(loEx.Message) == 'movefile'
|
||||
* SE OBTIENE EL MENSAJE DE ERROR DEL SISTEMA CORRESPONDIENTE A GetLastError()
|
||||
* FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
|
||||
LOCAL lnRetLen, lpBuffer
|
||||
lpBuffer = REPLICATE(CHR(0),256)
|
||||
lnRetLen = FormatMessage(0x00001000,0,lnRet,0,@lpBuffer,256,0)
|
||||
loEx.Message = LEFT(lpBuffer, lnRetLen)
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF tlRelanzarError THEN
|
||||
THROW
|
||||
ELSE
|
||||
@@ -190,7 +221,6 @@ DEFINE CLASS cl_FileName_Caps AS Custom
|
||||
ENDIF
|
||||
|
||||
FINALLY
|
||||
loFSO = NULL
|
||||
tcFileName = lcFileName
|
||||
|
||||
*-- Si existe FileName_Caps.LOG, lo actualiza
|
||||
|
||||
@@ -48,7 +48,11 @@ Else
|
||||
Next
|
||||
|
||||
If GetBit(nDebug, 4) Then
|
||||
If nExitCode = 0 Then
|
||||
MsgBox "End of Process!", 64, WScript.ScriptName
|
||||
Else
|
||||
MsgBox "End of Process!", 48, WScript.ScriptName
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -93,7 +97,7 @@ Private Sub evaluateFile( tcFile )
|
||||
MsgBox cCMD, 0, "PARAMETERS"
|
||||
Else
|
||||
nRet = oVFP9.DoCmd( cCMD )
|
||||
'nExitCode = oVFP9.Eval("_SCREEN.ExitCode")
|
||||
nExitCode = oVFP9.Eval("_SCREEN.ExitCodeFNC")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user