Red de conocimiento informático - Problemas con los teléfonos móviles - VB DIR extrae nombres de archivos de más de 256 bytes

VB DIR extrae nombres de archivos de más de 256 bytes

Utilice la función API FindFirstFile para resolver este tipo de problemas.

El siguiente es el código de prueba. Me tomó media hora. Tengo que agregar algunos puntos...

¿Privado? ¿Declarar?

¿Privado? ¿Declarar?Función?FindFirstFile?Lib?"kernel32"?"FindFirstFileA"?(ByVal?lpFileName?As?String,?lpFindFileData?As?WIN32_FIND_DATA)?As?Long

Privado?Declarar?Función?FindNextFile ¿Lib?"kernel32"?alias "FindNextFileA"? (ByVal?hFindFile?As?Long,?lpFindFileData?As?WIN32_FIND_DATA)?As?Long

¿Privado?Declarar?Función?FindClose?Lib?"kernel32"? (ByVal?hFindFile?As?Long)?As?Long

'Definición de longitud máxima de ruta y constantes de atributos de archivo

Private?Const?MAX_PATH?=?260

¿Privado?Const?FILE_ATTRIBUTE_ ARCHIVE?=?amp; H20

Const?FILE_ATTRIBUTE_COMPRESSED?=? >

¿Const?FILE_ATTRIBUTE_HIDDEN?=? y H2

¿Const?FILE_ATTRIBUTE_NORMAL?=? y H80

Const?FILE_ATTRIBUTE_READONLY?=? p>Const?FILE_ATTRIBUTE_SYSTEM?=? amp;H4

Const?FILE_ATTRIBUTE_TEMPORARY?=? amp;H100 'Definición de tipos de datos personalizados FILETIME y WIN32_FIND_DATA

Private?Type?FILETIME dwLowDateTime ? ¿Como?Long dwHighDateTime?As?Long

End?Type

¿Privado?Type?WIN32_FIND_DATA

dwFileAttributes?As?Long

ftCreationTime ?Como?FILETIME

ftLastAccessTime?As?FILETIME

ftLastWriteTime?As?FILETIME

nFileSizeHigh?As?Long

nFileSizeLow? ?Long

dwReserved0?As?Long

dwReserved1?As?Long

cFileName?As?String?MAX_PATH

c¿Alternativo? ?Cadena?*?14 Fin?Tipo

Privado?Sub?Command1_Click()<

/p>

Dim?sPath$,?strFileName$

sPath?=?"C:\Temp\1,2,3,4,5,6,7,8,7,8 ,9,10 1,2,3,4,5,6,7,8,9,10 1,2,3,4,5,6,7,8,9,11 1,2,3,4, 5, 6, 8, 7, 8, 9, 12 1, 3, 4, 5, 6, 8, 7, 8, 9, 13 1, 3, 4, 6, 7, 7, 8, 9, 14 1 ,3,4,5,6,7,7,8,90,141,5,6,7,80,141,6,7,8,90,15,6,7,8,80,16,17 ,18,20 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7- 8-9- 10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7 -8-9 -10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6- 7-8- 9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6-7-8-9-10 12-3-4-5-6 -7-8 -9-10 12-3-4-5-6-7.txt"

Debug.Print?" Longitud de la ruta completa del archivo: ";?Len(sPath),?" Longitud del nombre del archivo: " ;?Len(sPath)?-?Len("C:/Temp/")

Dim?lHandle?As?Long?'El identificador de FindFirstFileA

Dim ?tFindData? Como?WIN32_FIND_DATA?'

lHandle?=?FindFirstFile(sPath, ?tFindData)

Si lHandle?=? - entonces

If?tFindData .dwFileAttributes? lt;gt;?&H20?¿Entonces' archivo?&H10?Directorio

MsgBox?"Archivo no encontrado:"?"Nombre de archivo:";?tFindData.cFileName

Debug.Print ?"Longitud del archivo:";?tFindData.nFileSizeLow

End?If

Else?'La consulta finaliza o se produce un error

MsgBox?"La consulta finalizó o se produjo un error"

End?If

FindClose?lHandle

End? sub