Posicionamiento dentro de Directorios de la aplicación

23/06/2008 - 20:07 por Centurion | Informe spam
Hasta ahora pensaba que System.Environment.currentDirectory señalaba a una
posición fija dentro del disco y que hacía referencia al directorio
Bin\Debug o Release de la aplicación, pero ahora veo que si utilizas un
OpenFileDialog y te posicionas en otro directorio ahora
Environment.currentDirectory apunta a ese directorio, entonces como puedo
utilizar un posicionamiento fijo para indicarle a la aplicación la ruta de
las imágenes, los ficheros etc.

un saludo

Preguntas similare

Leer las respuestas

#6 Centurion
23/06/2008 - 21:23 | Informe spam
Gracias RFOG, si me doy cuenta de las posibilidades de hacerlo con XML, en
principio ya lo he hecho con LastIndexOf y luego con más tiempo diseñaré
algo mejor.


"RFOG" escribió en el mensaje
news:
Yo lo hago siempre así, sobre todo si he de cargar esos ficheros en tiempo
de ejecución. Lo que hago es tener una clase global estática con todos los
parámetros que me interesan y luego dentro del código voy construyendo las
rutas, siempre absolutas.

Otra forma, quizás más .NET, es la de guardar esas cadenas en un archivo
de configuración y sacarlas cuando te interesen, añadiendo el path de la
aplicación, así podrás cambiar nombres etc sin tener que recompilar. Ahora
bien, como a mi no me gusta el XML, yo suelo hacerlo con un INI a partir
de una clase creada por mi. De esta forma incluso podrías moverlos sin
tocar el código.

Algo así:

Tener una cadena que haga de ruta de adaptación, por ejemplo ".\\".
Luego vas añadiendo a esa la ruta del ejecutable y la de cada gráfico.

rutaEjecutable+adaptador+rutaGrafico.

Si, por ejemplo, cambias todos los gráficos a otro lugar, puedes poner el
adaptador a, por ejemplo ".\\..\\" dentro del config, y todos los gráficos
se han movido al directorio padre. En mi caso, rutaEjecutable+adaptador ha
sido combinado una sola vez en el constructor estático de la clase
estática o en el main del programa. Pero es solo un ejemplo.

"Centurion" wrote in message
news:
Si he visto que por Application.StartUpPath accedo a BIN/Debug o Release
y obtengo toda la ruta en una cadena, y luego por lastIndexOf("\") puedo
recortar la cadena hasta donde me interese, pero se te ocurre alguna
forma distinta de acceder al directorio inicial de la aplicación
(Aplicacion1) para luego añadirle "Graficos\xxxxx.jpg" etc.

un saludo

"RFOG" escribió en el mensaje
news:
Pues trabaja con rutas completas en lugar de solo el nombre, o mantén tu
mismo un array con las rutas posibles y vas haciendo la búsqueda manual.
En general, IMHO, lo recomendado es eso: cada fichero tiene su ruta
completa, y si al definirlo no la tiene, se le añade antes de guardarlo.
O usa rutas relativas respecto a la del propio programa, que puedes
obtener del objeto Appication.

De todos modos no entiendo lo de que en el servidor está otra. O abres
un fichero local o en el servidor, y Windows accederá mediante una ruta
completa, ya sea "C:\\blabla" o "\\\\Servidor\\blabla", aunque tu
expecifiques una relativa o sin ruta.

"Centurion" wrote in message
news:%
pero entonces que utilizas como referencia para indicar la posición de
un archivo, no puedes dar una dirección absoluta porque en el servidor
será otra.

un saludo
"RFOG" escribió en el mensaje
news:
Efectivamente es así: en Windows cada aplicación tiene un solo
directorio por defecto, que no lo da el .NET, sino el propio Windows.
Es una rémora de los tiempos del MS-DOS y en cuanto cambies ese valor
en cualquier sitio de la aplicación, el directorio cambia globalmente
ya que es común a toda la aplicación. Una de las características de
los cuadro de diálogo comunes (que son de Windows, .NET es sólo una
capa encima) es esa: la de cambiar el directorio por defecto.

"Centurion" wrote in message
news:
Hasta ahora pensaba que System.Environment.currentDirectory señalaba
a una posición fija dentro del disco y que hacía referencia al
directorio Bin\Debug o Release de la aplicación, pero ahora veo que
si utilizas un OpenFileDialog y te posicionas en otro directorio
ahora Environment.currentDirectory apunta a ese directorio, entonces
como puedo utilizar un posicionamiento fijo para indicarle a la
aplicación la ruta de las imágenes, los ficheros etc.

un saludo




Microsoft Visual C++ MVP
==>>>>> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
>>>>> Una palabra mal colocada estropea el más bello pensamiento.








Microsoft Visual C++ MVP
==>>> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
>>> Una palabra mal colocada estropea el más bello pensamiento.








Microsoft Visual C++ MVP
==> Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
> Una palabra mal colocada estropea el más bello pensamiento.

Respuesta Responder a este mensaje
#7 Alberto Poblacion
23/06/2008 - 21:33 | Informe spam
"Centurion" wrote in message
news:
Si he visto que por Application.StartUpPath accedo a BIN/Debug o Release
y obtengo toda la ruta en una cadena, y luego por lastIndexOf("\") puedo
recortar la cadena hasta donde me interese, pero se te ocurre alguna forma
distinta de acceder al directorio inicial de la aplicación (Aplicacion1)
para luego añadirle "Graficos\xxxxx.jpg" etc.



Primero, para obtener la ruta del ejecutable puedes usar:
string ubicacion = Assembly.GetExecutingAssembly().Location;

Esto vale para cualquier ensamblado, no solo para un ejecutable de tipo
WinForm.

A continuación, para separar la ruta y añadirle "Graficos\xxxxx.jpg":

using System.IO;
...
string ruta = Path.GetDirectoryName(ubicacion);
string fichero = Path.Combine(ruta, @"Graficos\xxxxx.jpg");
Respuesta Responder a este mensaje
#8 Centurion
23/06/2008 - 21:45 | Informe spam
Gracias Alberto lo probaré a ver como resulta

"Alberto Poblacion"
escribió en el mensaje news:
"Centurion" wrote in message
news:
Si he visto que por Application.StartUpPath accedo a BIN/Debug o Release
y obtengo toda la ruta en una cadena, y luego por lastIndexOf("\") puedo
recortar la cadena hasta donde me interese, pero se te ocurre alguna
forma distinta de acceder al directorio inicial de la aplicación
(Aplicacion1) para luego añadirle "Graficos\xxxxx.jpg" etc.



Primero, para obtener la ruta del ejecutable puedes usar:
string ubicacion = Assembly.GetExecutingAssembly().Location;

Esto vale para cualquier ensamblado, no solo para un ejecutable de tipo
WinForm.

A continuación, para separar la ruta y añadirle "Graficos\xxxxx.jpg":

using System.IO;
...
string ruta = Path.GetDirectoryName(ubicacion);
string fichero = Path.Combine(ruta, @"Graficos\xxxxx.jpg");


Respuesta Responder a este mensaje
#9 Yanine
30/06/2008 - 17:06 | Informe spam
Hola que tal, saludos a todos.
tengo un problema similar, en mi aplicación debo manipular la información
que esta en dos servidores, cada uno de ellos se encuentra en diferentes
paises. Mi pregunta es, como direcciono el path para que apunte al otro
servidor? intente poniendo el ip publico al inicio de la ruta pero me da
error, alguien puede ayudarme?
Muchas gracias
Respuesta Responder a este mensaje
#10 RFOG
30/06/2008 - 19:18 | Informe spam
Yanine avait écrit le 30/06/2008 :
Hola que tal, saludos a todos.
tengo un problema similar, en mi aplicación debo manipular la información
que esta en dos servidores, cada uno de ellos se encuentra en diferentes
paises. Mi pregunta es, como direcciono el path para que apunte al otro
servidor? intente poniendo el ip publico al inicio de la ruta pero me da
error, alguien puede ayudarme?
Muchas gracias



Dos cosas.

La primera es si esos ordenadores están conectados mediante VPN con los
tuyos, es decir, forman parte de una red local sobre IP. Si es así,
deberías poder acceder a los ficheros mediante

@"\\servidor\uta\fichero".

siempre y cuando tengas los permisos adecuados para ello.

Ahora bien, si ese ordenador está en internet y lo que quieres es
traerte un fichero, así no lo puedes hacer (en el hipotético caso de
que pudieras sería un fallo de seguridad más que garrafal).

Puedes traértelo de muchas formas siempre y cuando te asignen
remotamente los permisos, mediante una URL WEB, un FTP, Sockets... Pero
de esta forma no se pueden abrir directamente, sino que tienes que
hacerlo mediante el componente adecuado (para HTTP creo que es
HttpWebRequest, para ftp FtpWebRequest). Echale un vistazo al espacio
de nombres System.Net.

Una vez que tengas un stream con alguno de esos componente lo demás es
igual.

Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación

Cuando el trabajo no constituye una diversión, hay que trabajar lo
indecible para divertirse
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida