Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Actualizar ruta de aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=88090)

JuanOrtega 11-04-2015 02:09:43

Actualizar ruta de aplicacion
 
Hola tengo una aplicacion consola que muevo de carpeta para despues mostrar la ruta actual del archivo pero el problema es que en el mensaje no se muestra la ruta actual (muestra el anterior) a pesar de que el archivo se movio correctamente.

El codigo de la aplicacion consola es este :

Código Delphi [-]
  ruta := 'c:/xampp/'+'/'+ExtractFileName(paramstr(0));
  MoveFile(Pchar(paramstr(0)), Pchar(ruta));
  MessageBox(0,Pchar(paramstr(0)),'test',MB_ICONQUESTION);

¿ Cual es el error ?

ecfisa 11-04-2015 05:51:19

Hola Lepuke.

Código Delphi [-]
  ...
  MessageBox(0, Pchar( ParamStr(1) ), 'test', MB_ICONQUESTION);
end.

Revisa este enlace: ParamStr

Saludos :)

JuanOrtega 11-04-2015 21:02:40

gracias por la ayuda ecfisa , pero paramstr(1) me devuelve un string vacio , en cambio cuando uso 0 me devuelve la ruta vieja , ¿ porque pasa esto ?

AgustinOrtu 11-04-2015 21:17:48

A simple vista, ParamStr(0) tiene la ubicacion en donde windows ejecuta el programa. Creo que siempre se lo manda como argumento a todo .exe.

Que en la mayoria de los casos coincida con la ruta de la aplicacion no quiere decir que asi sea siempre :), tu caso es una de las excepciones

Lepe 11-04-2015 22:35:26

Hombre, si te dicen que revises la ayuda, lo normal es decir qué no entiendes en la ayuda.

Una línea de comando siempre tiene como mínimo el ParamStr(0) que es el propio ejecutable,"tu project1.exe". Si al llamar a tu programa desde ms-dos, le pasas algún parámetro, entonces paramStr(1) será ese parámetro. Por ejemplo:

Código:

c:\>d:\delphi\project1.exe "primer parametro" segundo
ParamStr(0) es "d:\delphi\project1.exe"
ParamStr(1) es "primer parametro"
ParamStr(2) es "segundo". La línea de comandos se separan por espacios. En este caso no hace falta comillas dobles porque no tiene espacios.

En Delphi, en el menú Run -> parameters -> puedes especificar los parámetros que quieras para testear cuando ejecutes desde delphi tu programa.

Creo que lo que quieres mostrar en el MessageBox es el contenido de la variable ruta, en lugar del paramstr(0). Y si no es así, explica qué quieres hacer ;).


La franja horaria es GMT +2. Ahora son las 16:45:51.

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