Autor Tema: Como evitar error al leer una carpeta ??  (Leído 9262 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pic27

  • PIC10
  • *
  • Mensajes: 42
Como evitar error al leer una carpeta ??
« en: 08 de Julio de 2004, 12:23:00 »
Hola, como puedo saber si está disponible una letra (unidad) antes de escribir en ella?

Se si un fichero existe antes de abrilo con:
If Dir(App.Path & "Base_C.txt" <> "" Then

Pero claro, esto me sirve para cuando la unidad es la misma y no me va a dar error, pero no se como hacerlo para saber si una unidad (por ejemplo en red) está disponible antes de escribir en ella.

Y de paso...... je,je ¿como se sabe el resto de una división?"
Gracias.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Como evitar error al leer una carpeta ??
« Respuesta #1 en: 08 de Julio de 2004, 14:14:00 »
Pues a lo del resto de una división entera sería una cosa así:

resto = dividendo Mod divisor

SALUDOS

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: Como evitar error al leer una carpeta ??
« Respuesta #2 en: 08 de Julio de 2004, 21:37:00 »
Excelente pregunta !!!! Porque al menos la puedo responder...

Acá parte del código de un programa de los míos:

Private Sub Drive1_Change()
   On Error GoTo errores
   rutaDrive = Drive1.drive
   Dir1.Path = Drive1.drive   " Establece la ruta del directorio.
   Exit Sub
   
errores:
   Select Case Err.Number   " Evalúa el número de error.
        Case 68   " Error "Dispositivo no disponible".
            MsgBox "El dispositivo no está disponible.", vbOKOnly + vbExclamation, "Error"
            Drive1.drive = "c"
   End Select
   
End Sub


Ok, esto es así, o al menos es una de las maneras...
En el formulario tengo un DriveListBox para seleccionar las unidades de disco. Esta está enlazada con un DirListBox y este último con un FileListBox.
Lo que hace este procedimiento es: cuando cambiás de unidad de disco el cambio se ve reflejado en la lista de directorios y en la de archivos.
Ahora... que sucede si seleccionás la diskettera como drive y no hay ningún disco puesto? SE CUELGA TODO!!!
Mientras se está diseñando no pasa nada, tira el errror y vuelve al IDE. Pero en un programa ya compilado y funcionando es faltal. Tira un error y se cierra el programa sin más.
Entonces le ponés la línea "On Error GoTo errores" al principio para que en caso de error saltee todo y salga por ahí.
Notese el uso de GOTO, en este caso es necesario, es una de las pocas excepciones ya que esta instrucción no se usa nunca salvo en casos como este.
En ése caso salta a la línea "errores", evalúa el error, si es dispositivo no listo tira el error, define nuevamente C: y sale del procedimiento.

Voy a ver si puedo publicar toda la lista de errores de sistema de VB para que puedan aplicarlos en otras circunstancias.
Salu2.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: Como evitar error al leer una carpeta ??
« Respuesta #3 en: 08 de Julio de 2004, 21:40:00 »
Acá la lista completa directamente del MSDN de Micro$oft... je je !!

Errores interceptables:
   

Mientras una aplicación está en ejecución pueden ocurrir errores interceptables.}
Algunos de estos errores pueden ocurrir también durante el periodo de desarrollo o durante el tiempo de compilación. Puede probar y responder a estos errores interceptables mediante la instrucción On Error y el objeto Err. Los números de error no usados en el intervalo de 1 a 1000 están reservados para futuras versiones de Visual Basic.


3 Return sin Gosub
5 El argumento o la llamada al procedimiento no son válidos
6 Desbordamiento
7 Sin memoria
9 El subíndice está fuera del intervalo
10 La matriz está bloqueada de manera fija o temporal
11 División por cero
13 No coinciden los tipos
14 No hay suficiente espacio de cadena
16 La expresión es demasiado compleja
17 No se pudo realizar la operación solicitada
18 Se produjo una interrupción por parte del usuario
20 Resume sin Error
28 No hay suficiente espacio de pila
35 No se ha definido Sub, Function o Property
47 Hay demasiados clientes de la aplicación DLL
48 Error al cargar DLL
49 La convención de llamada a la DLL no es correcta
51 Error interno
52 Nombre o número de archivo incorrecto
53 No se pudo encontrar el archivo especificado
54 Modo de archivo incorrecto
55 El archivo ya está abierto
57 Error de E/S de dispositivo
58 El archivo ya existe
59 La longitud de registro es incorrecta
61 Disco lleno
62 La entrada de datos ha sobrepasado el final del archivo
63 El número de registro es incorrecto
67 Hay demasiados archivos
68 El dispositivo no está disponible
70 Se ha denegado el permiso
71 El disco no está listo
74 No se pudo cambiar el nombre con una unidad de disco diferente
75 Error de acceso a la ruta o al archivo
76 No se ha encontrado la ruta de acceso
91 La variable de objeto o la variable de bloque With no está establecida
92 El bucle For no está inicializado
93 La cadena modelo no es válida
94 El uso de Null no es válido
97 No se pudo llamar a un procedimiento Friend de un objeto que no tiene una instancia de la clase definida
98 A property or method call cannot include a reference to a private object, either as an argument or as a return value
298 No se puede cargar la DLL especificada del sistema
320 No se pueden utilizar nombres de dispositivos de caracteres en nombres de archivos
321 Formato de archivo no válido
322 No se pudo crear un archivo temporal necesario
325 Formato no válido en archivo de recursos
327 No se encontró el valor del dato
328 Parámetro no válido. No se puede escribir matrices
335 No se puede acceder al registro del sistema
336 El componente no está registrado correctamente
337 No se encontró el componente
338 El componente no se ejecutó correctamente
360 Ya se ha cargado el objeto
361 No se puede cargar o descargar este objeto
363 No se ha encontrado el control especificado
364 El objeto se ha descargado
365 No se puede descargar dentro de este contexto
368 El archivo especificado no está actualizado. Este programa necesita una versión más reciente
371 El objeto especificado no se puede utilizar como un formulario propietario para Show()
380 Valor de propiedad no válido
381 El índice de la matriz de propiedades no es válido
382 Set no se admite en tiempo de ejecución
383 Set no se admite (propiedad de sólo lectura)
385 Se necesita un índice de matriz de propiedad
387 Set no está permitido
393 La propiedad no se puede leer en tiempo de ejecución
394 La propiedad "|1" es de sólo escritura
400 El formulario ya está mostrado. No se pudo mostrar en forma modal
402 Primero debe cerrar u ocultar el formulario modal superior
419 Permiso denegado para utilizar el objeto
422 No se encontró la propiedad
423 No se ha encontrado la propiedad o el método
424 Se requiere un objeto
425 El uso del objeto no es válido
429 El componente no puede crear el objeto o devolver la referencia a ese objeto
430 Esta clase no acepta Automatización
432 No se encontró el nombre del archivo o de la clase durante la operación de Automatización
438 El objeto no acepta esta propiedad o método
440 Error de Automatización
442 Se ha perdido la conexión con la biblioteca de tipos o con la biblioteca de objetos para procesos remotos
443 El objeto de Automatización no tiene un valor predeterminado
445 El objeto no permite esta acción
446 El objeto no acepta argumentos con nombre
447 El objeto no acepta la configuración regional actual
448 No se ha encontrado el argumento con nombre
449 El argumento no es opcional
450 Número de argumentos erróneo o asignación de propiedad no válida
451 El objeto no es una colección
452 El número ordinal no es válido
453 No se encuentra la especificada
454 No se encuentra el recurso de código
455 Error en el bloqueo de los recursos de código
457 Esta clave ya está asociada con un elemento de esta colección
458 La variable usa un tipo de Automatización no admitido en Visual Basic
459 Este componente no acepta eventos
460 El formato del Portapapeles no es válido
461 No se encontró el método o el dato miembro
462 El servidor remoto no existe o no se encuentra disponible
463 La clase no está registrada en la máquina local
480 No se puede crear una imagen AutoRedraw
481 Imagen no válida
482 Error de impresora
483 El controlador de impresora no admite la propiedad especificada
484 Problemas al obtener información de la impresora desde el sistema; asegúrese de que la impresora está configurada correctamente
485 El tipo de imagen no es válido
486 No se puede imprimir la imagen de formulario en este tipo de impresora
520 No se puede vaciar el Portapapeles
521 No se puede abrir el Portapapeles
735 No se pudo guardar el archivo en TEMP
744 No se encontró el texto de búsqueda
746 Sustituciones demasiado largas
31001 Sin memoria
31004 Ningún objeto
31018 La clase no está establecida
31027 No se pudo activar el objeto
31032 No se pudo crear el objeto incrustado
31036 Error al guardar el archivo
31037 Error al cargar el archivo



 

anything