Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
realmente es necesario especificar el path?

pues eso,
recuerdo hace años cuando programaba en versiones mas viejas de delphi y vb creo que habia que ponerlo porque si cambiabas de directorio la liabas.

se que el path del ejecutable se extrae muy facil con
ExtractFilePath(Application.ExeName);

pero realmente si yo quiero acceder a un fichero de texto o de lo que sea que esta en el directorio del ejecutable ¿debo especificar el path?

en definitiva es necesario esto?
MEMO1.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'fichero.txt');

o basta con esto
MEMO1.Lines.LoadFromFile('fichero.txt');

se que en principio funciona de las dos formas, pero quiero saber si podria tener algun problema por no especificarlo.

gracias
Responder Con Cita
  #2  
Antiguo 16-01-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Para mi juicio da lo mismo una que otra, lo que creo no debe de hacerse es partir de un camino preestablecido, tal que C:\Programa\ porque si cambiamos el fichero de carpeta dejará de funcionar, en los dos métodos anteriores todo funcionará correctamente si el fichero se encuentra en la misma carpeta que el ejecutabe.

Otra opción puede ser configurar estos caminos mediante un fichero INI.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 16-01-2010
neftali2 neftali2 is offline
Miembro
 
Registrado: ago 2007
Posts: 96
Poder: 17
neftali2 Va por buen camino
La duda que tengo es si cuando lo pones sin path, está mirando en el directorio del ejecutable o en el que él considera que es el directorio actual.
Responder Con Cita
  #4  
Antiguo 16-01-2010
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo más seguro, en mi opinión, es incluir el "path", como tú dices. ¿Por qué? Pues porque, de otro modo (si no me equivoco) puede haber problemas si alguien ha cambiado el "directorio actual" y creo que es ahí donde se "mira" si no se especifica directorio alguno. ¿Que tú no lo cambias? Bueno, pero, puede que algún componente, o alguna "rutina" escondida por ahí sí lo haga.

De todas formas, no creo que sea problema incluir el "path"; si ves "repetitivo" escribir el mismo código tal vez podrías definir alguna constante o alguna variable "global" por ahí que te simplicase un poco el asunto. En definitiva, creo que lo de poner el "path" puede ser necesario, puesto que de la otra forma podemos encontrarnos con problemas en un momento dado. Tal vez no es muy probable, pero, ¿por qué no evitar estos posibles problemas si lo tenemos tan sencillo?
Responder Con Cita
  #5  
Antiguo 16-01-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Hasta donde sé, la cosa no ha cambiado.

Sin path, accedes al directorio activo de windows (que otro programa puede haberlo cambiado) así que no es fiable.

Cuando me he olvidado de poner el path, mi archivo termina en la carpeta de windows (la mayoría de las veces)

Lo más cómodo es crear una unidad con parte de inicialización, así podrías tener preestablecido dicha "constante" y reutilizarlo en proyectos (como ya imaginarás, no es bueno poner muchas cosas en inicialización porque quizás no las necesites todas)

Código Delphi [-]
unit base;

interface

uses ...

var ExePath :string;

implementation

initialization
ExePath := ExtractFilePath(Application.Exename);

end.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 16-01-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
pensaba yo que era un tema que estaria claro, pero veo que estais igual que yo, osea de poner el path para asegurar,
quizas habria que hacer alguna prueba creando algun programa que cambie
el path y probarlo mientras tenemos nuestro programa en ejecucion.

Pero..... ¿como se cambia el path activo de windows para probar?
Responder Con Cita
  #7  
Antiguo 17-01-2010
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Dónde se creará el archivo "foo.txt"?

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin

  ChDir('C:\');

  fs := TFileStream.Create('foo.txt', fmCreate);

  fs.Free();

end;

En efecto, se creará en "C:\foo.txt". O sea que "ChDir()" establece el "directorio de trabajo" en "C:\" y, al no indicar luego una ruta absoluta, el archivo "foo.txt" se creará en "C:\foo.txt" y no en el directorio de nuestra aplicación, tal como podríamos esperar.
Responder Con Cita
  #8  
Antiguo 17-01-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
otra prueba que tambien es instructiva es crear dos programas, y ejecutarlos a la vez,
¿que ocurrirá entonces?
pues que si se crea el fichero en el directorio del ejecutable.
osea que un programa no le puede cambiar de path al otro

Cita:
procedure TForm2.Button1Click(Sender: TObject);
begin
ChDir('C:\');
end;
Cita:
procedure TForm2.Button1Click(Sender: TObject);
var fs: TFileStream;
begin fs := TFileStream.Create('foo.txt', fmCreate);
fs.Free();
end;

otra prueba que he hecho es poner un componente Topenfile ejecutarlo y cambiar ahi de directorio.
Pero con eso no se cambia el path.
En cambio si ponemos un compoente tipo Tdirectoryoutline y cambiamos de directorio, si que cambia el path activo.

En definitiva si no estamos seguros de que componentes vamos a usar mejor ponerlo para asegurar.
Aunque si controlamos los componentes que tenemos no haria falta realmente.

Última edición por cocute fecha: 17-01-2010 a las 22:52:27.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Busquedas por cualquier criterio, sin especificar ninguno Wonni SQL 15 14-03-2007 19:30:13
Especificar donde guardar archivo generado. Coco_jac PHP 1 25-08-2006 15:58:03
Es necesario el BDE? juliopag1 Conexión con bases de datos 2 15-12-2005 19:22:19
Especificar el índice en SQL como un parámetro Tio SQL 4 19-06-2003 01:36:02
Como especificar la ruta de red? Argaron Conexión con bases de datos 3 21-05-2003 23:26:24


La franja horaria es GMT +2. Ahora son las 22:39:42.


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
Copyright 1996-2007 Club Delphi