Página 1 de 1
Windows XP e Directory() com espaços
Enviado: 04 Abr 2018 02:29
por JoséQuintas
Retornaram algumas máquinas de W7 pra XP, e a opção de pesquisar na pasta foi perdida.
A alternativa que pensei foi fazer pelo aplicativo, mas ....
Alguma idéia de como fazer isto funcionar no Windows XP ?
(Ou outros, não testei em outros Windows)
Código: Selecionar todos
cPath := [h:\"Documentos Locação"\"Fotos Imóveis"\"Fotos Imóveis"\]
aFiles := Directory( cPath + "*.*" )
Windows XP e Directory() com espaços
Enviado: 04 Abr 2018 11:30
por Kapiaba
Tente assim:
Código: Selecionar todos
cArq := ""
cExt := ""
cPath := ""
//cPath := cDirExe+"UNIDANFE\EMAIL\ANEXOS\"
cPath := "H:\Documentos Locação\Fotos Imóveis\Fotos Imóveis\"
cFile := "*.*"
// RECURSIVE
aFile := DIRECTORYRECURSE( cPath + cFile )
If Len(aFile)==0
cPdfNFeUni := ""
Else
For nI := 1 to Len( aFile )
hb_FNameSplit( aFile[nI,1], @cPath, @cArq, @cExt )
? cPath+" "+cArq+" "+cExt+" Perfeito!"
Next
aFiles := ALLTRIM( cPath+cArq+cExt )
EndIf
Abs.
Windows XP e Directory() com espaços
Enviado: 07 Abr 2018 14:04
por JoséQuintas
Lembrando que vai ser só pra XP, por não ter o mesmo recurso do W10.
Falta testar nele.
Código: Selecionar todos
#include "directry.ch"
#include "inkey.ch"
PROCEDURE HLPESQDOCXP
LOCAL cFile, cPath, cTexto := Space(50), GetList := {}
cPath := "d:\temp\Documentos Locação\Fotos Imóveis\Fotos Imóveis\"
DO WHILE .T.
@ 2, 5 SAY "Texto a pesquisar:" GET cTexto PICTURE "@!"
READ
IF LastKey() == K_ESC
EXIT
ENDIF
cFile := win_GetOpenFileName(, "Foto", cPath, "Foto", "*" + Trim( cTexto ) + "*", 1 )
ENDDO
RETURN
Acredito que possa ser problema de codepage, e talvez renomear pastas funcione também.
Windows XP e Directory() com espaços
Enviado: 07 Abr 2018 14:48
por Claudio Soto
Si no me equivoco la función Directory trabaja con path cortos sin espacios ni caracteres especiales.
Hay que usar la función del api de Windows GetShortPathName para convertir de path largo a el equivale corto, algo asi:
#include <windows.h>
#include <tchar.h>
#include "hbapi.h"
HB_FUNC ( LONG2SHORTPATH )
{
TCHAR *cLongPath = hb_parc (1);
TCHAR *cShortPath [ 2048 ];
GetShortPathName( cLongPath, cShortPath, sizeof( cShortPath ) / sizeof( TCHAR ) );
hb_retc( cShortPath );
}
Windows XP e Directory() com espaços
Enviado: 09 Abr 2018 11:07
por Kapiaba
Código: Selecionar todos
/*
* SPN.PRG
*
* cShortName() - FilePath Long to Short (GetShortPathNameA())
*
* Soporte a Funciones del Api de Windows
*
* Andrade A. Daniel - 2002
* Rosario, Argentina
*
* Libre Distribución
*/
/*
* cShortName()
*/
FUNCTION cShortName( cLong )
Local cShort := Space(164) + Chr(0)
Local nBuffer := 164
Local nLen
nLen := GetSPName( cLong, @cShort, nBuffer )
cShort := Left( cShort, nLen )
RETURN( cShort )
// Windows Api
DLL32 STATIC FUNCTION GetSPName( lpszLongPath AS STRING, lpszShortPath AS STRING, lBuffer AS LONG ) ;
AS LONG PASCAL FROM "GetShortPathNameA" LIB "kernel32"