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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 356
221  Programación / Programación Visual Basic / Re: [RETO] Ruta más oculta en: 12 Enero 2013, 20:54 pm
aca va otra forma, igual a la que usa Dir$ que puse antes, pero esta es recursiva y usa apis, lo cual es muchisimo mas rapida.

la anterior funcion me tarda 7 segundos en escanear la carpeta de program files de mi pc (que tiene 7 mil carpetas), esta solo tarda 1 segundo  y a veces menos :xD.

Código
  1. Option Explicit
  2.  
  3. Private Const vbDot = 46
  4. Private Const MAXDWORD As Long = &HFFFFFFFF
  5. Private Const MAX_PATH As Long = 260
  6. Private Const INVALID_HANDLE_VALUE = -1
  7. Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
  8.  
  9. Private Type FILETIME
  10.   dwLowDateTime As Long
  11.   dwHighDateTime As Long
  12. End Type
  13.  
  14. Private Type WIN32_FIND_DATA
  15.   dwFileAttributes As Long
  16.   ftCreationTime As FILETIME
  17.   ftLastAccessTime As FILETIME
  18.   ftLastWriteTime As FILETIME
  19.   nFileSizeHigh As Long
  20.   nFileSizeLow As Long
  21.   dwReserved0 As Long
  22.   dwReserved1 As Long
  23.   cFileName As String * MAX_PATH
  24.   cAlternate As String * 14
  25. End Type
  26.  
  27. Private Type FILE_PARAMS
  28.   bRecurse As Boolean
  29.   sFileRoot As String
  30.   sFileNameExt As String
  31.   sResult As String
  32.   sMatches As String
  33.   Count As Long
  34. End Type
  35.  
  36. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  37. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  38. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  39.  
  40. Dim vCarpetas As New Collection
  41.  
  42. Private Sub Command1_Click()
  43.   Call CarpetaMasProfunda("c:\program files (x86)")
  44.  
  45.   Dim vResult As String
  46.   vResult = ""
  47.  
  48.   Dim vArr() As String
  49.   Dim vCont As Integer
  50.   Dim i As Integer
  51.  
  52.   For i = 1 To vCarpetas.Count
  53.  
  54.       vArr = Split(vCarpetas(i), "\")
  55.  
  56.       If UBound(vArr) > vCont Then
  57.           vCont = UBound(vArr)
  58.           vResult = vCarpetas(i)
  59.       End If
  60.   Next i
  61.  
  62.   MsgBox vResult
  63. End Sub
  64.  
  65. Private Sub CarpetaMasProfunda(ByVal pPath As String)
  66.  
  67.   Dim FP As FILE_PARAMS
  68.  
  69.   With FP
  70.      .sFileRoot = pPath
  71.      .sFileNameExt = "*.*"
  72.      .bRecurse = 1
  73.   End With
  74.  
  75.   Dim WFD As WIN32_FIND_DATA
  76.   Dim hFile As Long
  77.   Dim sRoot As String
  78.   Dim spath As String
  79.   Dim sTmp As String
  80.  
  81.   sRoot = QualifyPath(FP.sFileRoot)
  82.   spath = sRoot & FP.sFileNameExt
  83.  
  84.   hFile = FindFirstFile(spath, WFD)
  85.  
  86.   If hFile <> INVALID_HANDLE_VALUE Then
  87.  
  88.      Do
  89.  
  90.         If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) And Asc(WFD.cFileName) <> vbDot Then
  91.  
  92.            sTmp = TrimNull(WFD.cFileName)
  93.  
  94.            FP.Count = FP.Count + 1
  95.            vCarpetas.Add sRoot & sTmp
  96.  
  97.            If FP.bRecurse Then
  98.  
  99.               FP.sFileRoot = sRoot & sTmp
  100.               Call CarpetaMasProfunda(FP.sFileRoot)
  101.  
  102.            End If
  103.  
  104.         End If
  105.  
  106.      Loop While FindNextFile(hFile, WFD)
  107.  
  108.      hFile = FindClose(hFile)
  109.   End If
  110. End Sub
  111.  
  112. Private Function TrimNull(pStart As String) As String
  113.   Dim vPos As Integer
  114.  
  115.   vPos = InStr(pStart, Chr$(0))
  116.  
  117.   If vPos Then
  118.      TrimNull = Left$(pStart, vPos - 1)
  119.      Exit Function
  120.   End If
  121.  
  122.   TrimNull = pStart
  123. End Function
  124.  
  125. Private Function QualifyPath(pPath As String) As String
  126.   If Right$(pPath, 1) <> "\" Then
  127.      QualifyPath = pPath & "\"
  128.   Else
  129.      QualifyPath = pPath
  130.   End If
  131. End Function

saludos.
222  Foros Generales / Noticias / Re: Messenger no cerrará completamente el 15 de marzo, según Microsoft en: 11 Enero 2013, 23:08 pm
hasta el dia en que me loguee y me salte error porque no puedo entrar mas , ese dia dejare de usar el messenger, por ahora lo sigo usando, no me gusta skype todavia.
223  Programación / .NET (C#, VB.NET, ASP) / Re: Es c# dejen lo pasar por ahora sobre metodos virtuales en: 11 Enero 2013, 23:05 pm
no entiendo porque este post tiene chincheta  :rolleyes:
224  Programación / .NET (C#, VB.NET, ASP) / Re: Option Strict on no permtite el enlace en tiempo de ejecucion en: 11 Enero 2013, 22:14 pm
no uses el objeto Wscript.Shell, es obsoleto en .NET, usa las clases de .NET que ya vienen para acceder al registro.
225  Programación / Programación Visual Basic / Re: [RETO] Ruta más oculta en: 11 Enero 2013, 21:30 pm
pues aca te pongo algo simple con Dir$, no creo que sea lo mas rapido, seguro alguna recursiva podra ser mas veloz, como con FSO, pero por lo menos cumple el objetivo.

Código
  1. Option Explicit
  2.  
  3. Private Function CarpetaMasProfunda(ByVal pPath As String)
  4.  
  5.    Dim vCarpetas As New Collection
  6.    Dim vNext As Integer
  7.    Dim vDir As String
  8.    Dim vSubDir As String
  9.    Dim vResult As String
  10.  
  11.    vNext = 1
  12.    vCarpetas.Add pPath
  13.  
  14.    Do While vNext <= vCarpetas.Count
  15.  
  16.        vDir = vCarpetas(vNext)
  17.        vNext = vNext + 1
  18.  
  19.        vSubDir = Dir$(vDir & "\*", vbDirectory)
  20.  
  21.        Do While vSubDir <> ""
  22.  
  23.            If vSubDir <> "." And vSubDir <> ".." Then
  24.                vSubDir = vDir & "\" & vSubDir
  25.                On Error Resume Next
  26.                If GetAttr(vSubDir) And vbDirectory Then vCarpetas.Add vSubDir
  27.            End If
  28.  
  29.            vSubDir = Dir$(, vbDirectory)
  30.        Loop
  31.    Loop
  32.  
  33.    '---------------------------------------------------------------------
  34.  
  35.    vResult = ""
  36.  
  37.    Dim vArr() As String
  38.    Dim vCont As Integer
  39.    Dim i As Integer
  40.  
  41.    For i = 1 To vCarpetas.Count
  42.  
  43.        vArr = Split(vCarpetas(i), "\")
  44.  
  45.        If UBound(vArr) > vCont Then
  46.            vCont = UBound(vArr)
  47.            vResult = vCarpetas(i)
  48.        End If
  49.    Next i
  50.  
  51.    CarpetaMasProfunda = vResult
  52. End Function
  53.  
  54. Private Sub Form_Load()
  55.    MsgBox CarpetaMasProfunda("C:\Program Files")
  56. End Sub

lo probe con una carpeta con 10 mil carpetas adentro y en unos 10 segundos me muestra el path mas largo.

saludos.
226  Programación / Programación General / Re: base de datos sql en: 11 Enero 2013, 19:17 pm
la verdad yo tampoco entiendo, si queres solo traer un registro hace TOP 1
227  Programación / .NET (C#, VB.NET, ASP) / Re: OMG! ¿Como corrijo esta visualización del Aero? en: 10 Enero 2013, 19:32 pm
nunca se deben usar colores de la paleta de sistema, ya que esta cambia a traves de los temas de windows, siempre hay que usar la paleta de coores que se llama "personalizado", esa no cambia, puede que le hayas puesto un color que varie y por eso pasa.
228  Comunicaciones / Redes / Re: Es posible una misma IP en dos ciudades distintas? en: 10 Enero 2013, 05:09 am
esos buscadores de ip solo buscan de donde es el ISP proveedor que te da internet, por ejemplo a mi ahora me dice que estoy en una ciudad a 500 km de donde estoy realmente.
229  Programación / .NET (C#, VB.NET, ASP) / Re: [SOLUCIONADO] Mi app tarda demasiado en iniciar en: 10 Enero 2013, 01:54 am
si, los controles realizados asi que heredan (Inherits), son controles rapidos, pues lo unico que estas haciendo es usar el mismo control de .NET y le estas modificando sus metodos para hacer lo que uno quiera, a mi tambien me gustan ese tipo de controles, pero la verdad no se porque son tan pesados esos packs de controles de esas empresas, y para colmo hay que pagar, ni en pedo pago para que me haga mas lenta la aplicacion  :xD

yo antes tenia este orden de prioridad:

INTERFAZ LINDA - APLICACION RAPIDA

despues cambie a

APLICACION RAPIDA - INTERFAZ LINDA

ya que me encanta primero buscar que las cosas funcionen lo mas rapido posible, luego ver los procesos que tardan mas y si hay posibilidad de optimizarlos. y mientras menos dependencias mejor, que solo sea el .exe y nada mas.
230  Foros Generales / Foro Libre / Re: estoy muy viejo para empezar? en: 10 Enero 2013, 01:41 am
para luego soñar y encontrar la solución. Lo del sueño me ha pasado muchas veces, incluso todavía aveces me pasa.

si el subconciente sigue trabajando, a mi tambien me paso que hasta programaba y pensaba de programar en los sueños, por algo tengo este nick  >:D
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 356
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines