Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2009
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Question Que es más óptimo a la hora de obtener el directorio de trabajo

En el caso de requerir archivos desde el directorio de trabajo, que método es más óptimo

- ExtractFilePath(ParamStr(0)) + 'archivo.txt';
- ExtractFilePath(Application.ExeName) + 'archivo.txt';
- GetCurrentDir + '\archivo.txt';
Responder Con Cita
  #2  
Antiguo 31-01-2009
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,

Creo que la tercera opción es la adecuada, puesto que las demás pueden no proporcionarte el directorio de trabajo. La tercera opción sí, en todo caso. Las otras, tal vez, si se da la casualidad... no sé si me explico. Y siempre que no me equivoque.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 31-01-2009
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Esteee no, no entendí la parte de "si se da la casualidad...".
Responder Con Cita
  #4  
Antiguo 31-01-2009
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,

Bueno. "GetCurrentDir()" es la función para obtener el directorio de trabajo. Ahora bien, si tu aplicación (ninguna parte de tu aplicación) establece otro, si no me equivoco, en efecto, el directorio de trabajo será el directorio de tu aplicación. Pero, eso puede cambiarse: existe la función "SetCurrentDir()". De este modo, sólo puedes estar seguro de obtener el directorio de trabajo usando "GetCurrentDir()". Si se da la casualidad de que el directorio de trabajo sigue siendo el de tu aplicación, entonces las otras "posibilidades" que muestras funcionarán, pero, sólo por casualidad. Dicho de otro modo, la única posibilidad que te garantiza obtener el directorio de trabajo es "GetCurrentDir()", y dicho aún de otra forma: el resto de posibilidades que muestras sólo te ofrecerán el directorio de trabajo "por casualidad"... así que lógicamente no deberías usarlas.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 31-01-2009
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
OK, muchas gracias Dec.
Responder Con Cita
  #6  
Antiguo 31-01-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
No concuerdo con esa relación que propones Dec, el problema creo que es el concepto de "directorio de trabajo". En todo caso lo claro para mi es que el directorio de trabajo es cualquiera que este dentro de la carpeta que contiene el ejecutable, por que? porque algún componente de terceros u otra situación puede (como tu dijiste) realizar por alguna necesidad un SetCurrentDir y cambiar el "directorio actual" a alguna carpeta totalmente impredecible. Entonces hacer un "GetCurrentDir + '\archivo.txt'" retornaría algo impredecible.

En tal caso la opción #3 no seria la más adecuada. Las otras dos opciones me parecen mas concretas, puesto que solo necesitamos recorrer la cadena retornada por GetModuleFileName para obtener la carpeta.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #7  
Antiguo 31-01-2009
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,

A ver. Tenemos que distinguir entre el directorio de trabajo y el directorio de la aplicación. Se me olvidó antes comentar, además, que el directorio de trabajo puede ser cambiado no ya por algún componente de tu aplicación, pero, por cualquier otra aplicación. Entonces, la forma de obtener el directorio de trabajo es "GetCurrentDir()". Si hablamos de obtener el directorio de la aplicación... esta función no es la indicada. ¿No estamos de acuerdo en esto?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 31-01-2009
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,

Por cierto, ahora que lo menciona el compañero, es posible que se haya dado una confusión entre el directorio de trabajo y el directorio de la aplicación, del ejecutable de la aplicación. Son dos cosas distintas, y, bien parece que lo que se quiere aquí es el segundo, y no el primero, por cómo se utiliza la función "GetCurrentDir()", lo digo. Si esto es así, entonces, como he dicho, no es "GetCurrentDir()" la función que necesitamos, sino que cualquiera de las dos primeras posibilidades nos servirían. A ver si se aclara este punto.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 31-01-2009 a las 15:10:23.
Responder Con Cita
  #9  
Antiguo 31-01-2009
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Cita:
Empezado por MAXIUM Ver Mensaje
En el caso de requerir archivos desde el directorio de trabajo, que método es más óptimo

- ExtractFilePath(ParamStr(0)) + 'archivo.txt';
- ExtractFilePath(Application.ExeName) + 'archivo.txt';
- GetCurrentDir + '\archivo.txt';
Solo como apunte, la opción 1 y 2, son la misma, ya que la propiedad "ExeName" devuelve el "ParamStr(0)".

Código Delphi [-]
function TApplication.GetExeName: string;
begin
  Result := ParamStr(0);
end;

Saludos.
Responder Con Cita
Respuesta



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
Desde hace una hora ya no tengo Trabajo Paoti La Taberna 13 02-10-2007 02:49:59
Obtener directorio del programa bsa_sux Varios 3 02-02-2006 17:56:01
Obtener los archivos de un directorio MRSAM Varios 16 03-08-2005 21:37:12
Como cambiar el directorio de trabajo de una aplicación Javi2 Varios 2 23-11-2004 16:34:38
Obtener el directorio de trabajo en ORACLE 9i Jose Manuel Oracle 0 06-05-2003 17:20:42


La franja horaria es GMT +2. Ahora son las 17:02:35.


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