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

#1 RFOG
23/06/2008 - 20:14 | Informe spam
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.
Respuesta Responder a este mensaje
#2 Centurion
23/06/2008 - 20:20 | Informe spam
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.

Respuesta Responder a este mensaje
#3 RFOG
23/06/2008 - 20:35 | Informe spam
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.
Respuesta Responder a este mensaje
#4 Centurion
23/06/2008 - 20:53 | Informe spam
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.

Respuesta Responder a este mensaje
#5 RFOG
23/06/2008 - 21:16 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida