Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener ruta completa de RED (https://www.clubdelphi.com/foros/showthread.php?t=69373)

JordiP 13-08-2010 17:29:48

Obtener ruta completa de RED
 
Buenas amigos, mi aplicación esta ejecutandose en RED y queria saber si se puede saber la ruta completa desde donde ejecuto mi programa.
Para obtener la ruta en LOCAL utilizo
Código Delphi [-]
ExtractFilePath(Application.ExeName)
y el resultado sería algo como
Código:

c:\carpeta de programa\programa.exe
, pero en RED lo que obtengo con ExtractFilePath es .
Como puedo obtener desde un terminal, la ruta completa del programa que se ejecuta en un servidor? :confused:

Gracias a todos:D

ecfisa 14-08-2010 22:51:27

Cita:

Empezado por JordiP (Mensaje 373480)
pero en RED lo que obtengo con ExtractFilePath es .

Hola Jordip.

Si no entiendo mal, lo que te está mostrando ahí es la ruta completa a la ubicación de la aplicacion en el servidor.

Si lo que deseas obtener es una letra de unidad, previamente debes asignarle una en 'conectar a unidad de red'.

Es decir que la letra es local y no asignada por el servidor. Con esto quiero decir que a:\\Servidor\Sistema\Programa.exe.
En un equipo se le puede asignar: X:\Servidor\Sistema\Programa.exe y en otro: F:\Servidor\Sistema\Programa.exe,
refiriendose en ambos casos a la misma aplicación.

Esto nos deja hacer referencia de dos modos a la aplicación.
1.- Refiriendo la letra de unidad asignada F:\Servidor\Sistema\Programa.exe.
2.- Buscando la ruta a la carpeta contenedora en la red \\Servidor\Sistema\Programa.exe.

La letra de unidad funciona de forma similar a el alias de Delphi.

Saludos.

JordiP 16-08-2010 15:52:10

ECFISA, tu mensaje no acabo de entenderlo, porque si dices \\Servidor\Sistema\, quieres decir que Servidor es el nombre del PC y hasta donde yo se, no se puede crear una unidad de RED X:\Servidor\Sistema, en todo caso seria X:\Sistema, verdad ?

Es que creo que no me he sabido explicar nada, lo siento, Intentaré explicarme mejor ahora:
1. Tengo un servidor donde esta instalada mi aplicación, en la carpeta c:\programas\programa_xx\programa.exe. Estoy obligado a instalarlo allí.
2. Este servidor tiene compartido la carpeta "programa_xx", tampoco me dejan cambiar esto.
3. En otro terminal (PC), he creado una unidad de RED "X" a esa carpeta compartida, con lo que para acceder a mi programa, quedaria así: X:\programa.exe.

Llegados a este punto:
4. Ejecuto mi programa desde el terminal
5. y si pido la RUTA del programa, con la funcion "ExtractFilePath(Application.ExeName)", me devuelve "X:\" y a mi me interesa "c:\programas\programa_xx\", que es la ruta del servidor donde esta instalado mi programa.

Hay alguna manera de obtener esta ruta "c:\programas\programa_xx\"?:confused:

Espero que esta vez se entienda mejor mi duda, lo siento pero a veces cuesta explicarse.

Gracias a todos y espero que alguien pueda ayudarme:D

ecfisa 16-08-2010 22:51:26

Hola JordiP.

Si, tenés razon. Al reemplazar la ruta al servidor por la letra de unidad, no va "\Servidor": 'sintax error' :D.

Ahora vamos a tu pregunta: (seré cuidadoso con la sintáxis... :))

Lo que te quise decir, es que, (hasta donde yo sé), la 'letra de unidad' y la carpeta(si la hay),
del servidor, donde se encuentra la aplicación; es transparente para el resto de los equipos de red.

De esta manera, cualquier cambio que se realize en el servidor, no afecta a los equipos clientes .

En mi humilde opinión, no creo que se pueda.


Saludos.

JordiP 17-08-2010 11:04:55

Gracias ECFISA, eso mismo creo yo, pero si alguien sabe alguna manera de hacerlo, agradecido quedare de por vida, jeje;)

Casimiro Notevi 17-08-2010 11:31:49

Seguramente se puede con alguna función de la API de windows, pero se me ocurre una forma "chapuza", un programita en el servidor que al ejecutarlo guarde la ruta en un fichero de texto, por ejemplo. Luego, desde tu programa, sólo has de leer ese fichero.
Puedes ejecutarlo al iniciar el sistema, por ejemplo.

ecfisa 17-08-2010 13:46:29

Cita:

Empezado por Casimiro Notevi (Mensaje 373740)
Seguramente se puede con alguna función de la API de windows, pero se me ocurre una forma "chapuza", un programita en el servidor que al ejecutarlo guarde la ruta en un fichero de texto, por ejemplo. Luego, desde tu programa, sólo has de leer ese fichero.
Puedes ejecutarlo al iniciar el sistema, por ejemplo.

Eso Casimiro, es una buena solución. Por supuesto hay que tener acceso al servidor.

Ahora lo que no me queda en claro que se puede hacer con la 'letra' obtenida.

Creo JordiP que nos haría falta la función API que menciona Casimiro; habrá que seguir buscando.

Saludos.

Enan0 17-08-2010 14:14:32

Perdon por mi ignorancia..
Pero si yo accedo a traves de un net Sharing o carpeta compartida o como sea..

desde mi equipo la ruta de acceso va a ser como la que te muestra en este caso windows. (LEtra de unidad Compartida \ carpeta o Ruta servidor \ Carpeta)

la mejor opcion que se me ocurre es la solucion que te dio Casimiro.

Porque salvo que estes utilizando alguna maquina Virtual (no se llama asi pero no recuerdo el nombre) como Citrix la aplicacion se ejecuta en tu equipo, alojado en la carpeta o ruta compartida. (no la real). (creo ojo.)

ElDioni 17-08-2010 14:17:35

Parecido a lo que te comentaba Casimiro, en un tabla de una base de datos puedes ir guardando el nombre de la aplicación y la ruta donde está instalada a la hora de instalar, cuando desde un terminal estes ejecutando la aplicación y quieras saber su ruta, como la aplicación se llamará igual, buscala por el nombre en la tabla por medio de una consulta y así podrás saber la dirección.

Un saludo.

JordiP 20-08-2010 09:52:47

Gracias a todos, es lo que ya habia pensado y lo he puesto en marcha ya.

No creo que sea una chapuza, digamos que es una solución valida.

Garcias nuevamente amigos:D


La franja horaria es GMT +2. Ahora son las 12:43:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi