Asociacion de ficheros

Asociacion de ficheros

Postby antolin » Thu May 03, 2012 8:09 am

Buenas a todos

Me he creado una aplicación para mi trabajo que gestiona una serie de ficheos propios a los que les he puesto estencion XJ2. El programa los abre y trabaja con las distntas líneas del fichero, entre otras cosas.

Mi intención es asociar esa extención con mi programa. Hasta ahí, todo bien, mi pregunta es: Cuando haga doble click sobre un fichero XJ2 se abrirá mi programa, pero ¿como sabe el programa que se ha habierto porque se ha pulsado sobre un fichero XJ2? y ¿cómo sabe el programa el nombre del fichero que lo llamó?

Me imagino que habrá que pasarle el nombre del fichero al programa y que éste lo recogerá a través de la función Main(), pero ¿cómo?. ¿Alguién ha hecho alguna vez algo así?

Gracias de antemano.
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Asociacion de ficheros

Postby antolin » Thu May 10, 2012 11:26 am

Efectivamente, cuando se asocian los ficheros a mi programa este recibe el nombre del fichero que lo llamó vía FUNTION MAIN(cFileName) y cFileName trae el nombre del fichero con el path completo.

Pero ahora tengo un problema. Cuando pincho sobre un fichero XJ2 se abre mi programa desde el directorio del fichero XJ2, no desde el suyo propio, y CurDir() me devuelve el directorio del fichero XJ2, no el del programa. Y eso es un problema pues necesito saber en que directorio corre mi programa antes de abrir bases de datos y otros ficheros de datos. ¿Hay alguna maner de saberlo de sin recurrir a CurDir()?

Gracias
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Asociacion de ficheros

Postby antolin » Thu May 10, 2012 11:30 am

Una aclaración: Creando un INI en el directorio del sistema de Windows no habría problema, pero necesito hacerlo sin tener que tocar nada en ese directorio de sistema, pues algunos ordenadores no me lo permiten (falta de derechos de acceso para algunos usuarios).
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Asociacion de ficheros

Postby FiveWiDi » Thu May 10, 2012 2:39 pm

antolin wrote:Efectivamente, cuando se asocian los ficheros a mi programa este recibe el nombre del fichero que lo llamó vía FUNTION MAIN(cFileName) y cFileName trae el nombre del fichero con el path completo.

Pero ahora tengo un problema. Cuando pincho sobre un fichero XJ2 se abre mi programa desde el directorio del fichero XJ2, no desde el suyo propio, y CurDir() me devuelve el directorio del fichero XJ2, no el del programa. Y eso es un problema pues necesito saber en que directorio corre mi programa antes de abrir bases de datos y otros ficheros de datos. ¿Hay alguna maner de saberlo de sin recurrir a CurDir()?

Gracias


Arg( 0 ) es el path completo de tu EXE; si al arrancar tu programa capturas este valor, podrás abrir los archivos que quieres en su carpeta.

Por ejemplo:

cPathExe := cFilePath( Arg(0) )

cPathDatos := cFilePath( Arg(0) ) + "\misdatos"

Y así haces lo que quieres.

Nota: Ahora no sé si la function cFilePath() es de FiveWin o mía.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1060
Joined: Mon Oct 10, 2005 2:38 pm

Re: Asociacion de ficheros

Postby antolin » Fri May 11, 2012 9:07 am

Gracias FiveWidi, Funciona perfectamente.

Nunca había utilizado esas funciones aunque recuerdo haber leido algo de eso hace muuuuchos años. Todos los días se aprende algo nuevo.
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Asociacion de ficheros

Postby antolin » Fri May 11, 2012 9:12 am

Por cierto FiveWidi, cFilePath() es d FiveWin.

Además, ocurre algo curioso, si abro mi programa normalmente, Arg(0) me devuelve el nombre largo completo, con su path y todo. Sin embargo cuando se habre pinchando sobre el otro fichero, me devuelve lo mismo pero con nombre corto. Menos mal que está SFN2LFN() para ponerle remedio.
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Asociacion de ficheros

Postby FiveWiDi » Fri May 11, 2012 10:47 am

antolin wrote:Por cierto FiveWidi, cFilePath() es d FiveWin.

Además, ocurre algo curioso, si abro mi programa normalmente, Arg(0) me devuelve el nombre largo completo, con su path y todo. Sin embargo cuando se habre pinchando sobre el otro fichero, me devuelve lo mismo pero con nombre corto. Menos mal que está SFN2LFN() para ponerle remedio.


Gracias, no lo sabía.

Como bien has dicho: "Todos los días se aprende algo nuevo." -> Yo también.

Buen fin de semana.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1060
Joined: Mon Oct 10, 2005 2:38 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 86 guests