|
42
|
Programación / Programación Visual Basic / Re: Cerrar mi programa
|
en: 19 Noviembre 2005, 10:06 am
|
Crea una variable Boolean en un módulo estándar (una variable global), por ejemplo con el nombre bTerminateApp y cuando esté establecida a True todos los procedimientos que se estén ejecutando terminan.
También asegurate de descargar los otros formularios antes del principal, por ejemplo si tenés el formulario frmDatos y descargas frmMain sin descargar el otro primero, el programa no termina.
Igualmente por lo que decís pareciera que está ejecutandose alguna tarea asíncrona como puede ser un thread que creaste o un timer usando SetTimer.
En todo caso indica bien cuál es el código que te da el error y buscamos solución para ese puntualmente.
Saludos.
|
|
|
48
|
Programación / Programación Visual Basic / Re: Buscar Archivos con Visual Basic 6.0
|
en: 12 Noviembre 2005, 23:19 pm
|
El sistema es lo mismo, usas esa función recursiva que aparece en el código para recorrer todos los directorios y archivos, con FindFirstFile y FindNextFile. Te dejo el código para que lo veas, como recorre todos los directorios y archivos. Sólo hay que hacerle un par de modificaciones para que busque. Option Explicit
Sub DiskWalk(Optional Path As String) On Error Resume Next Static sCurDir$ Dim sDirName$ Dim iCnt%, i% If Path = vbNullString Then 'Si se pasa el argumento establece la unidad inicial. ' Path = GetLocalDrive(1) sCurDir = Path 'Primer directorio (root) ElseIf Not Right$(Path, 1) Like "\" Then Path = Path & "\" 'Agrega la barra End If 'Obtiene cuántos directorios hay en el directorio actual (sCurDir) iCnt = GetDirCnt(Path) 'Recorre todos los directorios. ' For i = 1 To iCnt sDirName = GetDir(Path, i) 'Obtiene el nombre de un directorio. sCurDir = sCurDir & sDirName 'Próximo directorio. 'Copia el archivo en los subdirectorios del 'directorio actual. ' Call DiskWalk(sCurDir) 'Pasa al nivel anterior. ' sCurDir = Left$(sCurDir, Len(sCurDir) - 1) sCurDir = Left$(sCurDir, InStrRev(sCurDir, "\")) DoEvents Next End Sub
Function GetLocalDrive(Optional Index As Integer) As String On Error Resume Next Dim sDrives$, saDrives$() Dim i%, iCurIndex% Dim r&
'Obtiene todas las unidades de disco. ' sDrives = String$(256, 0) r = GetLogicalDriveStrings(256, ByVal sDrives) 'Guarda las unidades en una matriz ' saDrives = Split(sDrives, vbNullChar) For i = 1 To UBound(saDrives) If GetDriveType(saDrives(i)) = DRIVE_FIXED Then 'Si es una unidad de disco local 'verifica que corresponda con el 'indice especificado. ' iCurIndex = iCurIndex + 1 If iCurIndex = Index Then GetLocalDrive = saDrives(i) Exit For End If End If Next
End Function
Function GetDirCnt(PathSpec As String) As Long On Error Resume Next Dim sDir$, lCnt&
'Agrega la barra '\' si no está incluida 'en la ruta de acceso. ' PathSpec = IIf(Not Right$(PathSpec, 1) Like "\", PathSpec & "\", PathSpec) 'Obtiene el primer directorio. ' sDir = Dir(PathSpec, vbDirectory Or vbHidden Or vbSystem) 'Recorre todos los directorios. ' Do While Not (sDir Like vbNullString) If Not Left$(sDir, 1) Like "." Then sDir = PathSpec & sDir If (GetAttr(sDir) And vbDirectory) = vbDirectory Then 'Si es un directorio incrementa el contador. ' lCnt = lCnt + 1 End If End If InvalidDir: sDir = Dir() 'Obtiene el próximo archivo o directorio. Loop GetDirCnt = lCnt End Function
Function GetDir(PathSpec As String, Index As Integer, Optional GetOnlyDirName As Boolean = True) As String On Error Resume Next Dim sDir$, lCnt&
'Agrega la barra '\' si no está incluida 'en la ruta de acceso. ' PathSpec = IIf(Not Right$(PathSpec, 1) Like "\", PathSpec & "\", PathSpec) 'Obtiene el primer directorio. ' sDir = Dir(PathSpec, vbDirectory Or vbHidden Or vbSystem) 'Recorre todos los directorios. ' Do While Not (sDir Like vbNullString) If Not Left$(sDir, 1) Like "." Then If (GetAttr(PathSpec & sDir) And vbDirectory) = vbDirectory Then 'Si es un directorio incrementa el contador. ' lCnt = lCnt + 1 If lCnt = Index Then 'Si es el directorio requerido devuelve 'el nombre. ' GetDir = IIf(GetOnlyDirName, sDir, PathSpec & sDir) GetDir = IIf(Not Right$(GetDir, 1) Like "\", GetDir & "\", GetDir) Exit Do End If End If End If InvalidDir: sDir = Dir() 'Obtiene el próximo archivo o directorio. Loop
End Function
Saludos.
|
|
|
50
|
Programación / Programación Visual Basic / Re: REGLAS DEL FORO ¡LEED TODOS!
|
en: 11 Noviembre 2005, 09:33 am
|
Quiero agregar algunos puntos más. - Los post que no aporten información útil o que pregunten cosas que se encuentren en los post pegados serán eliminados automáticamente, y a no llorar.
- Vuelvo a insistir, este es un foro de programación, nada de troyanos y esas lameradas, para eso está el foro de troyanos y virus.
- Usar las etiquetas code para postear código, realmente ayudan muchísimo a la lectura del código.
- USAR EL BUSCADOR, la mayoría de los temas importantes ya se hablaron y están en el foro o en la Recopilación de post Interesantes
No es mucho, son reglas para que podamos organizarnos y entendernos entre todos. Saludos.
|
|
|
|
|
|
|