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 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Buscar archivo text, sin ruta.

Hola a todos
Tengo una pregunta, seguramente sencilla, pero no se como se hace.
Lo que quiero es buscar y ver un archivo text pero sin buscarlo con una ruta, osea que lo encuentre en el mismo sitio donde esta el programa.
También me gustaría que lo encontrara en un USB, osea en una de esas cosas que se usan para portar información y también sin necesidad de darle la ruta, se podrá?.
Saludos

Última edición por Caral fecha: 25-02-2008 a las 19:00:33.
Responder Con Cita
  #2  
Antiguo 25-02-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
para saber la ruta donde esta el programa puedes utilizar:

ExtractFileDir(Application.ExeName);

si sabes como se llama el archivo se lo agregas y ya tienes la ruta completa, para buscarlo en unidades extraibles si no se, lo que habria es que buscar una lista de las unidades disponibles y realizar una busqueda recursiva entre los directorios...

es eso o entendi mal?
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues no me sale, no se como se hace lo que dices.
Un ejemplo:
Código Delphi [-]
ExtractFileDir(Application.ExeName);
Memo1.Lines.LoadFromFile('gen.text');
Por supuesto no camina, donde pongo el codigo?.
Saludos
Responder Con Cita
  #4  
Antiguo 25-02-2008
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Y así lo encuentra ?


Código Delphi [-]
Memo1.Lines.LoadFromFile( ExtractFilePath( Application.exename) + '/gen.text');
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO

Última edición por ArdiIIa fecha: 25-02-2008 a las 19:18:27.
Responder Con Cita
  #5  
Antiguo 25-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Carlos,

Debería usarse así:

Código Delphi [-]
TuVariable := ExtractFileDir(Application.ExeName) + 'NombreArchivo.txt';

Por el tema de buscar en discos extraíbles, hay material en los foros, ya me fijo bien... no tengo delphi a mano.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Gracias a todos.
Por ahora no me funciona, he hecho esto:
No va:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
Ruta: String;
begin
  Ruta:= ExtractFileDir(Application.ExeName)+'gen.Text';
  Memo1.Lines.LoadFromFile(Ruta);
end;
Tambien esto:
No va:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
Ruta: String;
begin
  Memo1.Lines.LoadFromFile( ExtractFilePath( Application.exename) + '/gen.text');
end;
Gracias por ayudarme.
Saludos
Responder Con Cita
  #7  
Antiguo 25-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Amigo, yo hago esto sin ningun problema

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile('archivo.txt');
end;
Solo que debe existir el Archivo.txt en la misma ruta del programa.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 25-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¿Amigo Carlos, no será un pequeño error de dedo?
Veo que tu pones como extensión .text, mientras que nosotros .txt, ¿no habrá por allí un caracter, un espacio o un símbolo mal colocado?

Por otro lado la barra invertida debe ser así: \

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues tenéis razón todos, de todas las formas que me habéis dicho funciona:
El problema estaba en que ponia text y no Txt, sutil diferencia.
Sirve:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
Ruta: String;
begin
  Ruta:= ExtractFileDir(Application.ExeName)+'gen.Txt';
  Memo1.Lines.LoadFromFile(Ruta);
end;
Sirve:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile( ExtractFilePath( Application.exename) + 'gen.txt');
end;
Sirve:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile('gen.txt');
end;
Osea, todas las formas sirven, ahora solo me falta saber como lo hago si el archivo esta en el USB.
Gracias a todos.
Saludos
Responder Con Cita
  #10  
Antiguo 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola a todos
Otra pregunta.
Se puede correr o hacer correr el programa si esta en el usb?
No me traje el aparato ese y no puedo hacer la prueba, no me digáis que me estoy haciendo viejo y que voy para atrás.
Saludos
Responder Con Cita
  #11  
Antiguo 25-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Por el tema del USB podes ir viendo esto:
http://www.clubdelphi.com/foros/showthread.php?t=51299
http://www.clubdelphi.com/foros/showthread.php?t=48744
http://www.clubdelphi.com/foros/showthread.php?t=34381

Si detecta la unidad podríamos hacer un ShellEsxcute().

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #12  
Antiguo 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Gracias Delphius, no se como manejáis el buscador tan bien, a mi no me sale nada de eso, por suerte os tengo a vosotros.
Saludos
Responder Con Cita
  #13  
Antiguo 25-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Caral Ver Mensaje
Hola
Gracias Delphius, no se como manejáis el buscador tan bien, a mi no me sale nada de eso, por suerte os tengo a vosotros.
Saludos
Y a mi me da gusto tenerte (changos! sono medio feo), porque en cuanto tengo problemas cuanto intento ayudar en base de datos... como que me desaparezco.

A me me ha resultado relativamente fácil encontrar del tema... recordaba que yo ya lo había consultado y además el truco para buscar mejor es escribir en idioma argentino... ese no falla

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 25-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Caral Ver Mensaje
Hola a todos
no me digáis que me estoy haciendo viejo y que voy para atrás.
Pues que te digo amigo, no te estas haciendo viejo, ya eres un viejo

Cita:
Empezado por Caral Ver Mensaje
Gracias Delphius, no se como manejáis el buscador tan bien, a mi no me sale nada de eso, por suerte os tengo a vosotros.
Pues es la virtud de la juventud, a ti ya te está correteando Alz

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #15  
Antiguo 25-02-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Mejor no me ayudes amigo, con amigos asi, para que ........
Ah, y no menciones a mi amigo alz, que lo trato de mantener lejos
Saludos
Responder Con Cita
  #16  
Antiguo 26-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Amigo, yo hago esto sin ningun problema

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile('archivo.txt');
end;
Solo que debe existir el Archivo.txt en la misma ruta del programa.

Salud OS
Eliseo, Carlos: De esta forma el archivo no debe estar en la misma ruta que el programa... es decir, no lo buscará allí (conceptualmente), sino que en el "directorio actual" de la sesión.

Si haces un acceso directo al programa, podrías cambiar la ruta de la línea "iniciar en" y buscaría el archivo allí. Pero también podrías cambiar el "directorio actual" del programa con una llamada a ChDir.

En cambio utilizando Application.ExeName siempre se tendrá la ruta del exe (útil a veces, otras no)

Por ejemplo:

Código Delphi [-]
begin
  //leerá el archivo de la ruta donde se ha iniciado el programa, 
  //que podría ser la misma del exe, pero que podría ser una indicada
  //por el usuario en el acceso directo o por el proceso que ha arrancado
  //el programa en la llamada al api
  Memo1.LoadFromFile('archivo.txt'); 
  //cambia la "carpeta actual" a c:\
  ChDir('c:\');
  //Ahora busca archivo.txt en c:\ y ya no en la carpeta de 
  //inicio del programa
  Memo1.LoadFromFile('archivo.txt'); 
  //busca archivo.txt en la misma ruta del exe
  Memo1.LoadFromFile(
    IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'archivo.txt');
end;

Les recuerdo que en windows vista, los usuarios regularmente no tienen permisos para escribir dentro de c:\archivos de programa, por lo que la práctica de leer o guardar dentro de esta ruta está cayendo en desuso, favoreciendo las carpetas de los usuarios (Application Data o Mis Documentos, según sea el caso)

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #17  
Antiguo 26-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Pues tenéis razón todos, de todas las formas que me habéis dicho funciona:
El problema estaba en que ponia text y no Txt, sutil diferencia.
...
Osea, todas las formas sirven, ahora solo me falta saber como lo hago si el archivo esta en el USB.
Gracias a todos.
Saludos
Viendo esto... hay que tener en cuenta lo que es una ruta relativa y una ruta absoluta:

Una ruta relativa es aquella que no incluye la información completa de la ruta del archivo. El sistema (windows) determinará la ubicación del archivo en base a la "ruta actual" de la aplicación, según he explicado en mi post anterior.

Una ruta absoluta es aquella que incluye toda la información para ubicar un archivo. Es decir, incluye la letra que identifica la partición y la ruta completa dentro de esa partición para ubicarlo.

Así, de las formas enumeradas por carlos, la que usa ExtractFileDir y la que pone directamente el nombre del archivo, son rutas relativas, puesto que ExtractFileDir(Application.ExeName) devuelve la carpeta donde está el exe (quitando la letra que identifica la partición).

Esta funcionará siempre que la "ruta actual" de la aplicación esté en el mismo disco lógico que el exe. Pero si por alguna razón, la ruta actual está apuntando a otra partición, no funcionará.

Por el contrario, ExtractFilePath(Application.ExeName) devuelve la ruta completa a la carpeta donde está el exe, incluyendo la letra que identifica la partición, por lo que permite construir una ruta absoluta.

¿Me explique?

Un saludo.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #18  
Antiguo 26-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Yo me pensaba que la diferencia entre ExtractFileDir y ExtractFilePath era esta:

ExtractFileDir: C:\Archivos de programa\Mi programa
ExtractFilePath: C:\Archivos de programa\Mi programa\

¿Se ve la diferencia? La barrita al final.

En cuanto a Application.ExeName, hay otra alternativa, que es ParamStr(0); ya que el parámetro cero es el nombre del ejecutable (funciona incluso en los archivos bat escribiendo %0).


Salu2
Responder Con Cita
  #19  
Antiguo 26-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
¡es cierto!

Bueno, hablé de memoria... y obviamente recordaba mal. xiMike, esas en lo correcto.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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
Buscar una palabra en un variable text La__X SQL 2 10-06-2007 11:09:02
Abrir fichero, Buscar Ruta Alexis7788 Varios 5 27-02-2007 20:35:25
Ruta absoluta de un archivo Alexis De la Cr PHP 3 17-06-2006 23:41:22
ruta de un archivo ddd_ddd Varios 1 07-06-2006 23:08:34
Darle ruta a un archivo Kaesbu API de Windows 1 24-09-2003 17:47:09


La franja horaria es GMT +2. Ahora son las 11:38:40.


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