none
Funcion que retorna el Path de un fichero pasado como parámetro. RRS feed

  • Pregunta

  • Trato de hacer una función a la cual le de el nombre de un documento y me retorne donde se encuentra ubicado.

    Public Function BuscaRuta(ByVal fichero As String) As String
    Try
    Dim temp As String, Ret As Long
    Dim Unidad As String = "c:\"
    Cursor.Current = Cursors.WaitCursor
    (1) temp = String(MAX_PATH, 0) 'bufer para almacenar el path 
    ‘Retorna 1 si encuentra path y 0 si encuentra el fichero 
    Ret = SearchTreeForFile(Unidad, fichero, temp)
    If Ret <> 0 Then
    (2) BuscaRuta = (Left$(temp, InStr(1, temp, Chr$(0)) - 1))
    Else
    MsgBox("Archivo no encontrado", vbInformation)
    End If
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try
    End Function

    Trabajo con Visual Studio 2015 Express.
    Utilizo esta función para buscar el Path en el que se encuentra un fichero, el nombre del mismo se lo paso como parámetro. Las dos línea (1) y (2) son las que me dan el error, esta función la he encontrado en una página “Recursos Visual Basic”
    Si corrijo la línea (2) dejando solo el Chr(0) desaparece el error, lo que no se es si cambia el valor del dato retornado.
    Pero aun con esa corección la línea (1) me da como error “Base no válida”. Si cambio el “String” por ToString” desaparece como error por sigue dando “Base no válida”
    He probado con otras dos funciones que he encontrado en otros foros y en ambos el error es el mismo.
    Alguno utiliza esta función y puede decirme si le funciona correctamente, cual es el problema que yo tengo.

    Gracias y un saludo

    domingo, 6 de marzo de 2016 12:21

Respuestas

  • Hola,

    Trato de hacer una función a la cual le de el nombre de un documento y me retorne donde se encuentra ubicado.

    Pero puedes buscar el archivo con un OpenFileDialog y obtener la ruta mediante el Path.GetFullPath

    Dim abrir As New OpenFileDialog()
    
    If abrir.ShowDialog() = DialogResult.OK Then
    	txtRuta.Text = Path.GetFullPath(abrir.FileName)
    End If

    O si tienes la ubicación donde buscar, podrías recorrerlo con DirectoryInfo y obtener los archivos con .getFiles()

    Saludos.


    JC NaupaCrispín

    domingo, 6 de marzo de 2016 18:58

Todas las respuestas

  • Me temo que esas líneas (1) y (2) que has encontrado están construidas usando la sintaxis de VB6 (o anterior), no la del nuevo VB.NET. Aunque los dos lenguajes se parecen mucho, no son totalmente compatibles. Esas dos líneas probablemente se podrían arreglar con relativa facilidad, pero por el hecho de que estás construyendo un bufer para almacenar el PATH, mucho me temo que la subrutina SearchTreeForFile a la que estás llamando no va a ser compatible con VB.NET.

    Si quieres buscar ficheros en todo el árbol de directorios, es preferible que construyas una subrutina recursiva que por dentro utilice System.IO.Directory para enumerar los ficheros.

    domingo, 6 de marzo de 2016 13:33
  • Hola,

    Trato de hacer una función a la cual le de el nombre de un documento y me retorne donde se encuentra ubicado.

    Pero puedes buscar el archivo con un OpenFileDialog y obtener la ruta mediante el Path.GetFullPath

    Dim abrir As New OpenFileDialog()
    
    If abrir.ShowDialog() = DialogResult.OK Then
    	txtRuta.Text = Path.GetFullPath(abrir.FileName)
    End If

    O si tienes la ubicación donde buscar, podrías recorrerlo con DirectoryInfo y obtener los archivos con .getFiles()

    Saludos.


    JC NaupaCrispín

    domingo, 6 de marzo de 2016 18:58