Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Apertura de archivos dudas...

Estas en el tema de Apertura de archivos dudas... en el foro de Visual Basic clásico en Foros del Web. Buenas Necesito que mi aplicacion pueda abrir unos archivos, eso lo hago con el OPEN pero el tema es que no se la ruta ni ...
  #1 (permalink)  
Antiguo 31/05/2008, 20:13
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Apertura de archivos dudas...

Buenas

Necesito que mi aplicacion pueda abrir unos archivos, eso lo hago con el OPEN pero el tema es que no se la ruta ni el nombre del mismo, porque este viene cada 10 minutos y va cambiando el nombre de la ruta y archivo, se que por ejemplo va a caer en c:\entrada\archivo2432\45323.dat luego por ejemplo llega uno nuevo como en c:\entrada\archivo2433\45324.dat

Alguna idea?, alguien sabe como se hace?
  #2 (permalink)  
Antiguo 03/06/2008, 07:13
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Apertura de archivos dudas...

Cita:
Iniciado por SeNdEr2003 Ver Mensaje
Buenas

Necesito que mi aplicacion pueda abrir unos archivos, eso lo hago con el OPEN pero el tema es que no se la ruta ni el nombre del mismo, porque este viene cada 10 minutos y va cambiando el nombre de la ruta y archivo, se que por ejemplo va a caer en c:\entrada\archivo2432\45323.dat luego por ejemplo llega uno nuevo como en c:\entrada\archivo2433\45324.dat

Alguna idea?, alguien sabe como se hace?
Bueno, la única idea que se me ocurre es que pregunte al usuario dónde está el archivo, para así poder abrirlo (una buena opción sería mostrar el Diálogo Abrir).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/06/2008, 07:25
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Apertura de archivos dudas...

Hola!

Si la ubicación del fichero va a ser siempre la misma, puedes hacer un bucle con la función Dir(), ir comprobando por fecha cuales han sido los últimos directorios o ficheros creados, y compararlos con el último cargado.

Otra opción mejor, pero más complicada, es utilizar la función API ReadDirectoryChangesW para que nos "vigile" esa rama del árbol y notifique cada vez que detecta la creación de un fichero. En la dirección http://www.planet-source-code.com/URLSEO/vb/scripts/ShowCode!asp/txtCodeId!61052/lngWid!1/anyname.htm tienes un ejemplo que puedes adaptar.
  #4 (permalink)  
Antiguo 08/06/2008, 11:56
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Apertura de archivos dudas...

gracias, el tema es que siempre crea un directorio y archivo nuevo...
  #5 (permalink)  
Antiguo 08/06/2008, 15:10
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Apertura de archivos dudas...

La API ReadDirectoryChangesW te puede ayudar en ese caso, ya que te devuelve el nombre de lo que se haya creado, con su ruta completa, en el momento en que el sistema detecte la creación, por lo que te ahorras todas las comprobaciones.

Otra opción que no te había comentado antes es utilizar el objeto FileSystemObject así:

Código:
    Set UltimaCarpeta = Nothing
    Set UltimoFichero = Nothing

' Busca la carpeta más recientemente creada
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder("c:\entrada")
    Set sf = f.SubFolders
    For Each f1 In sf
        If UltimaCarpeta Is Nothing Then
            Set UltimaCarpeta = f1
        Else
            If f1.DateCreated > UltimaCarpeta.DateCreated Then
                Set UltimaCarpeta = f1
            End If
        End If
        DoEvents
    Next

' Busca el fichero más recientemente creado
    Set f = fs.GetFolder(UltimaCarpeta.Path)
    Set fc = f.Files
    For Each f1 In fc
        If UltimoFichero Is Nothing Then
            Set Ultimo Fichero = f1
        Else
            If f1.DateCreated > UltimoFichero.DateCreated Then
                Set UltimoFichero = f1
            End If
            DoEvents
        End If
    Next
Puedes declarar todas las variables necesarias como Object. Al terminar este código, puedes utilizar las siguientes propiedades de UltimoFichero:

.Attributes (máscara de atributos del fichero)
.DateCreated (fecha de creación)
.DateLastAccessed (fecha de último acceso)
.DateLastModified (fecha de última modificación)
.Drive (letra de la unidad)
.Name (nombre del fichero)
.ParentFolder (objeto Folder en que se encuentra el fichero)
.Path (ruta del fichero, incluye el nombre)
.ShortName (nombre en formato corto)
.ShortPath (ruta completa en formato corto, incluye el nombre del fichero)
.Size (tamaño en bytes)
.Type (descripción asignada a la extensión, si la tiene)

No he probado el código tal cual te lo he escrito aquí, pero no debería darte problemas. Ten en cuenta también que sólo vale para el último fichero; si por cualquier razón necesitases acceder a los dos o tres últimos, o a todos los creados en la carpeta más nueva, tendrías que hacer varias modificaciones.

Ya nos cuentas!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:07.