elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [DUDA] sobre apis Findnextfile en vb6
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA] sobre apis Findnextfile en vb6  (Leído 1,968 veces)
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
[DUDA] sobre apis Findnextfile en vb6
« en: 30 Marzo 2011, 18:10 pm »

hola vi las apis para listar archivos, hice este codigo:

Código
  1. ' 1 command1 + 1 text1
  2. Option Explicit
  3.  
  4. Private Type FILETIME
  5.    dwLowDateTime As Long
  6.    dwHighDateTime As Long
  7. End Type
  8. 'Estructura WIN32_FIND_DATA para info de archivos
  9. Private Type WIN32_FIND_DATA
  10.    dwFileAttributes As Long
  11.    ftCreationTime As FILETIME
  12.    ftLastAccessTime As FILETIME
  13.    ftLastWriteTime As FILETIME
  14.    nFileSizeHigh As Long
  15.    nFileSizeLow As Long
  16.    dwReserved0 As Long
  17.    dwReserved1 As Long
  18.    cFileName As String * 300
  19.    cAlternate As String * 14
  20. End Type
  21.  
  22.  
  23.  
  24.  
  25. Private Declare Function FindFirstFile _
  26.    Lib "kernel32" _
  27.    Alias "FindFirstFileA" ( _
  28.        ByVal lpFileName As String, _
  29.        lpFindFileData As WIN32_FIND_DATA) As Long
  30.  
  31. 'Api FindNextFile (busca el siguiente)
  32. Private Declare Function FindNextFile _
  33.    Lib "kernel32" _
  34.    Alias "FindNextFileA" ( _
  35.        ByVal hFindFile As Long, _
  36.        lpFindFileData As WIN32_FIND_DATA) As Long
  37.  
  38. 'Api GetFileAttributes (para recuperar los atributos de los archivos)
  39.  
  40.  
  41. Private Declare Function FindClose _
  42.    Lib "kernel32" ( _
  43.        ByVal hFindFile As Long) As Long
  44.  
  45. Private Sub Command1_Click()
  46.    Dim hFind As Long, RNext As Long, tmP As String, WFD As WIN32_FIND_DATA, Archivo As String, P As Long, Total As Long
  47.    hFind = FindFirstFile("d:\*.*", WFD)
  48.    tmP = "hFind: " & hFind & vbCrLf
  49.    RNext = FindNextFile(hFind, WFD)
  50.    While RNext <> 0
  51.        Total = Total + 1
  52.        tmP = tmP & "rNext: " & RNext & vbCrLf
  53.        Archivo = WFD.cFileName
  54.        Archivo = Replace(Archivo, Chr(0), "") 'borra los nulos
  55.  
  56.        tmP = tmP & Archivo & vbCrLf
  57.        RNext = FindNextFile(hFind, WFD)
  58.    Wend
  59.    FindClose hFind
  60.    Text1.Text = "Total archivos: " & Total & vbCrLf & tmP
  61. End Sub
  62.  

ejecuto el codigo , y el resultado es una lista en la que se repiten los nombres de los ficheros, luego intente ejecutandolo compilado y el resultado es el mismo:


http://hosting11.imagecross.com/image-hosting-64/3767error.jpg


*luego encontre la solucion cambiando el codigo de esta manera:

Código
  1. Private Sub Command1_Click()
  2.    Dim hFind As Long, RNext As Long, tmP As String, WFD As WIN32_FIND_DATA, Archivo As String, P As Long, Total As Long
  3.    hFind = FindFirstFile("d:\*.*", WFD)
  4.    tmP = "hFind: " & hFind & vbCrLf
  5.    RNext = FindNextFile(hFind, WFD)
  6.    While RNext <> 0
  7.        Total = Total + 1
  8.        tmP = tmP & "rNext: " & RNext & vbCrLf
  9.        Archivo = WFD.cFileName
  10.        P = InStr(1, Archivo, Chr(0))
  11.        If P > 0 Then Archivo = Left(Archivo, P - 1)
  12.  
  13.        tmP = tmP & Archivo & vbCrLf
  14.        RNext = FindNextFile(hFind, WFD)
  15.    Wend
  16.    FindClose hFind
  17.    Text1.Text = "Total archivos: " & Total & vbCrLf & tmP
  18. End Sub


el resultado:

http://hosting11.imagecross.com/image-hosting-64/4585solucion.jpg


*weno, no entiendo si los 2 codigos hacen lo mismo por que uno falla y el otro funciona bien, alguien podria explicar?


En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [DUDA] sobre apis Findnextfile en vb6
« Respuesta #1 en: 30 Marzo 2011, 18:59 pm »

HOLA!!!

Es necesaria velocidad?

si no es asi :
Código
  1. Private Sub Form_Load()
  2. Dim Archivo As String
  3.    Archivo = Dir("C:")
  4.    Do Until Archivo = ""
  5.        Debug.Print Archivo
  6.        Archivo = Dir
  7.    Loop
  8. End Sub

P.D: Conste que no es la mejor manera de hacerlo, pero es facil.

GRACIAS POR LEER!!!


« Última modificación: 30 Marzo 2011, 19:10 pm por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: [DUDA] sobre apis Findnextfile en vb6
« Respuesta #2 en: 31 Marzo 2011, 16:18 pm »

pense que el dir era más veloz  :xD , y si es más facil hacerlo de esa manera.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda existencial sobre las apis
Programación Visual Basic
fraktal 6 4,419 Último mensaje 6 Octubre 2006, 01:21 am
por fraktal
Una duda sobre ASM y las APIS « 1 2 »
ASM
theghost_te 17 11,598 Último mensaje 15 Noviembre 2010, 13:30 pm
por Eternal Idol
duda sobre apis de windows de 32 bits
Programación General
AlxSpy 2 3,209 Último mensaje 27 Agosto 2011, 02:32 am
por AlxSpy
Duda con APIs
Windows
S3kh 4 2,889 Último mensaje 14 Septiembre 2011, 23:46 pm
por S3kh
Duda Con MOV de APIs
ASM
x64core 3 3,498 Último mensaje 26 Diciembre 2011, 18:36 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines