sábado, 16 de enero de 2010

Pequeños truquillos(1)

Os dejo una lista de truquillos de código que más de una vez nos salvan de apuros:
CONOCER LA RUTA DIRECTORIO ESPECIAL:
Para conocer la ruta de un directorio especial dentro del equipo (Mis documentos, Mis Imágenes)….
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

La enumeración SpecialFolder del Namespace nos indica algunos directorios especiales y con la función GetFolderPath obtenemos la ruta completa

CONOCER EL DIRECTORIO EN EL QUE ESTAMOS TRABAJANDO:

Environment.CurrentDirectory

CONOCER LA RUTA DEL FICHERO EXE DE NUESTRA APLICACIÓN

Application.StartUpPath

OBTENER UN LISTADO DE LAS UNIDADES DE NUESTRO EQUIPO (1):
For Each Str As String In Environment.GetLogicalDrives()
            MsgBox(Str)
        Next
OBTENER UN LISTADO DE LAS UNIDADES DE NUESTRO EQUIPO (2):

Versión con expresión Lambda y lista…

Environment.GetLogicalDrives().ToList.ForEach(Function(str) Msgbox(str))

OBTENER UN LISTADO DE LOS PARAMETROS RECIBIDOS EN LA LINEA DE COMANDOS:

Environment.GetCommandLineArgs()

DETERMINAR SI UN FICHERO EXISTE
 My.Computer.FileSystem.FileExists("RUTAFICHERO.EXTENSION")

OBTENER EL LISTADO DE FICHEROS DE UN DIRECTORIO:
My.Computer.FileSystem.GetFiles("DIRECTORIO")

DETERMINAR LA INFORMACIÓN DE UN FICHERO:
My.Computer.FileSystem.GetFileInfo("FICHERO")

DETERMINAR LA INFORMACION DE UN DIRECTORIO:
My.Computer.FileSystem.GetDirectoryInfo("DIRECTORIO")

Continuará…

15 comentarios:

  1. Hola, después de tanto tiempo. Soy Gerry, uno de los seguidores pero no me deja loguearme.

    El método para encontrar el path de la aplicación está bien, pero por alguna razón, no funciona cuando estás programando (tal vez sólo en el compilado), lo cual complica el acceso a bases de datos en el directorio de la aplicación.

    ¿O yo estoy equivocado?

    ResponderEliminar
  2. Hola Gerry, cual de todos los metodos es el que no te funciona de forma correcta?
    Por otro lado, te invito a que visites mi nuevo Blog en Geeks.ms/Blogs/Jtorrecilla
    Un saludo!

    ResponderEliminar
  3. Me refiero al de obtener el path de la aplicación, acci{on necesaria para abrir la base de datos (salvo que la ubique en Mis documentos o en alg{un path absoluto, como el ra{iz de C:, por ejemplo). Cuando pruebo lo que estoy programando (dentro del Visual Basic 2010) no me funciona y tengo que escribir el path completo de la base de datos.

    ResponderEliminar
  4. ¿Tienes la BD dentro de tu proyecto?
    Si es asi puede que lo que suceda es que estes perdiendo los cambios que realzias en ejecución, por una propiedad del fichero de BD que se modifica desde VS (Copiar al directorio de resultados)
    Es esto lo que te sucede?

    ResponderEliminar
  5. Hola, perdón por la tardanza. En realidad, ni llega a eso, directamente el proyecto (siempre dentro del IDE de Visual Basic) no encuentra la base.

    ResponderEliminar
  6. Hola Gerry perdon por el tiempo en contestar, umh la verdad es que es algo curioso, mandame el proyecto si quieres y le doy un vistazo.

    ResponderEliminar
  7. Más fácil, creo un formulario con una TextBox:

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'TextBox1.Text = Environment.CurrentDirectory
    TextBox1.Text = Application.StartupPath
    End Sub

    En cualquiera de los dos casos el resultado es el mismo:
    f:\mis documentos\visual studio 2010\Projects\checkPath\checkPath\bin\Debug

    ResponderEliminar
  8. Data adicional:
    - por supuesto, Mis Documentos está en la particón F:
    - el proyecto se llama checkPath, como se ve allí.
    - obviamente, la primera líne TextBox1.Tex= etc. está como remark, en otra prueba, quito el remark a esa y lo pongo en la otra. En ambos casos el resultado es el mismo: no el path del proyecto sin el path \bi\Debug DENTRO del proyecto.

    ResponderEliminar
  9. Veo que ya debo cambiar el teclado....

    ResponderEliminar
  10. Hola Gerry, pero ese resultado que obtienes es correcto. Al estar en ejecución desde Visual Studio es donde realmente estás ejecutando la aplicación, si generas el ejecutable, y lo pones en la raiz: F:\ el resultado seria "f:\"

    ResponderEliminar
  11. OK, pero yo necesitaba probar la aplicación desde el IDE. En los foros de Microsoft me dijeron que incorporase la dB al proyecto con la opción de "Copy if newer" y allí más o menos funciona (si pongo la base en el raíz del proyecto)

    Gracias.

    ResponderEliminar
  12. Pero que es lo que realmente necesitas hacer?

    ResponderEliminar
  13. Es un sistema con una base datos residente en el mismo directorio que el .exe. Jamás el .exe del cliente estará e bin\debug.

    Si agrego la base al proyecto, no necesito escribir la dirección "dura" de la base, pero si la pusiera en un directorio \database, allí ya no funciona en el IDE.

    Todo esto es para poder ir haciendo pruebas desde dentro del IDE de Visual Basic.

    ResponderEliminar
  14. Javier Torrecilla3 de junio de 2011, 13:01

    Evidentemente el exe no estará en BIN/DEBUG, pero es que tienes que pensar que esa ruta es como si fuera la ruta donde el cliente tiene isntalada la aplicación...

    Si lo que quieres es : abrir la app guardar datos, y luego verlos desde VS, tendrás que agregar la BD al explorador de Servidores(tecla Windows + ALT + S) la copia de la BD que se encuentra en la Carpeta BIN\DEBUG

    ResponderEliminar
  15. Hola, como estas? necesito alguna funcion o algoritmo en Sybase 15 que dado un valor numerico en string le ponga separadores de miles.

    Por ejemplo
    Valor = '45000.00'
    Debe quedar como '45,000.00'

    Si puedes ayudarme te agradezco

    ResponderEliminar