Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   problemas con el LoadFromFile (https://www.clubdelphi.com/foros/showthread.php?t=45886)

sac 17-07-2007 18:28:44

problemas con el LoadFromFile
 
No se por qué me confundo con algo tan simple... necesito cargar en un memo un txt. Entonces, qué más fácil que el código...

memo1.Lines.LoadFromFile(coro.Text);

donde "coro.text" es el text de un edit.
Será un problema de donde guardo los txt?
porque los puse primero en otra carpeta y después en el mismo directorio donde está el programa (un lío de aquelos ya que son 100tos de archivos .txt)

Acepto todas y cada una de las sugerencias
Thanks por anticipado.

Sac

Caro 17-07-2007 18:51:49

Nose si te he entendido, pero debes colocar la ruta para que cargue tu archivo.

Código Delphi [-]
    memo1.Lines.LoadFromFile('e:\directorio\coro.Text');

Saluditos

roman 17-07-2007 19:58:05

Hola sac, ¿te percatas de que en tu mensaje no nos cuentas nunca cuál es el problema? Nos dices con qué es el problema pero no en qué consiste.

Puede ser entonces, como dice Caro, que debes especificar la ruta correcta, o puede ser que te falten las comillas alrededor del nombre de archivo, aunque no sé si esto es sólo una errata al escribir aquí el código.

// Saludos

sac 17-07-2007 21:28:11

Sigo teniendo problemas y no entiendo por qué.Es como que no encuentra el archivo y el archivo obviamente existe. Perdon Roman es cierto. Al compilar me da error: "EFOpenError... Cannot open file... y la ruta (que dicho sea de paso si, tambien está entre comillas simples)

roman 17-07-2007 21:30:31

¿Y es muy difícil explicar con más detalle el problema? Ni aclaras si la falta de comillas es accidental, ni si has puesto la ruta completa, ni mencionas el error que obtienes. ¡Nada! ¿Hay que sacar las palabras con tirabuzón?

// Saludos

sac 18-07-2007 17:04:13

ok aca va toda la explicacion.
Dentro de un form tengo un memo, un bitbtn, y un label y necesito tipear en el label el titulo de un coro para que cuando clickeo el boton busque el nombre ingresado, en un directorio y llevar la informacion al lines del memo tan simple y practico como eso.
Ésto es todo lo que tengo. Los Archivos son ".txt" uso el UpperCase, tengo todos los archivos en mayúscula, la ruta está correcta.
Se que el error debe ser una tontería pero yo no lo encuentro, espero me puedan ayudar y que ésta vez halla sido claro.
Éste es el procedure del Onclick.

procedure TPrograma.BuscarClick(Sender: TObject);
var busca:string;
begin
busca:=coro.Text;
try
presen.lines.LoadFromFile('c:\S.P.T.M\coros\busca.text')
Except
on EFOpenError do
messageDlg('El Coro NO está cargado',mtError,mbOKCancel,0);


end;

end;

El error que tira es el siguiente:
...EFOpenError with message 'Cannot Open file 'c:\S.P.T.M\coros\busca.text'. Process Stopped....

de paso me gustaría que me dijera si la exepcion está bien.
Perdon si las etiquetas no están bien usadasy por lo largo de la explicación
Gracias.

roman 18-07-2007 18:21:08

Vamos a ver si no es un simple errata, pero hablas de archivos .txt:

Cita:

Empezado por sac
Los Archivos son ".txt"

pero el que pones tiene extensión .text ¿No será eso?

// Saludos

sac 18-07-2007 20:42:43

No, eso tampoco es
 
no Roman lo que pasa es que yo uso una variable que llamo busca de tipo string. Coro sería el nombre del editl junto con su propiedad text de donde extraigo la cadena de caracteres que va a buscar en los nombres de los txt.
Por eso queda:
busca:=coro.text que sería lo mismo que decir:
variable:=edit.text


memo1.lines.LoadFromFile('c:\S.P.T.M\coros\busca');
La ruta termina en el directorio donde tengo todos los .txt. Se supone que la variable justamente "busca" entre los .txt y cuando encuentra uno con el mismo nombre me trae el contenido a los lines del memo.

por las dudas te digo que la ruta y los archivos existen y tambien probe sin variable, o sea:
memo1.lines.LoadFromFile('c:\S.P.T.M\coros\coro.text');

todavia no puedo encontrar el error.

Delphius 18-07-2007 20:48:47

Sac, tu error pasa por el hecho de que no estas concatenando las cadenas:

Código Delphi [-]
memo1.lines.LoadFromFile('c:\S.P.T.M\coros\'+coro.text);

No tengo delphi a mano, lo puse de memoria.. pero que por allí van los tiros
saludos,

Caral 18-07-2007 20:54:57

Hola
busca es una variable que contiene la direccion, o el nombre del archivo, muy raro, intenta esto:
Código Delphi [-]
procedure TPrograma.BuscarClick(Sender: TObject);
var busca:string;
begin
busca:= 'c:\S.P.T.M\coros\coro.txt';
try
presen.lines.LoadFromFile(busca);
Except
on EFOpenError do
messageDlg('El Coro NO está cargado',mtError,mbOKCancel,0);
end;
end;
Como digo, la variable busca, contiene la direccion y el nombre del archivo, con esto solo se necesita la colocacion del nombre de la variable a buscar, supongo que presen, es el nombre del memo.
Por otro lado, si la variable solo contiene el nombre del archivo hay que concatenar (ya casi me lo creo).
Código Delphi [-]
procedure TPrograma.BuscarClick(Sender: TObject);
var busca:string;
begin
busca:=coro.txt;
try
presen.lines.LoadFromFile('c:\S.P.T.M\coros\'+busca);
Except
on EFOpenError do
messageDlg('El Coro NO está cargado',mtError,mbOKCancel,0);
end;
end;
Si te fijas el tipo de archivo es txt, no text, creo que hay diferencia.
No estoy muy seguro de la forma, no te fies mucho.
Saludos

roman 18-07-2007 20:55:11

Cuando pones

Código Delphi [-]
memo1.lines.LoadFromFile('c:\S.P.T.M\coros\busca');

LoadFromFile busca un archivo que se llame 'busca', y no sabe nada acerca de una variable busca.

Lo mismo, cuando

Código Delphi [-]
memo1.lines.LoadFromFile('c:\S.P.T.M\coros\coro.text');

LoadFromFile no sabe nada acerca de un edit que se llame coro, y busca un archivo que- literalmente -se llame 'coro.text'.

En otras palabras, lo qe pongas entre los apóstrofes, se toma literalmente. Debes hacerlo así:

Código Delphi [-]
memo1.lines.LoadFromFile('c:\S.P.T.M\coros\' + busca);

o así:

Código Delphi [-]
memo1.lines.LoadFromFile('c:\S.P.T.M\coros\' + coro.text);

// Saludos

roman 18-07-2007 20:57:20

¡Oh vaya! Se han adelantado. Creo que con esto ya quedará bien claro :)

// Saludos

sac 19-07-2007 01:48:26

Un pequeño retoque más.
 
Mil gracias a todos!
Muchos se confundían el .txt del archivo con la propiedad text del edit.
No fue ni una cosa ni la otra... la pavada que me faltaba era la concatenación es cierto pero igual no encontraba nada asique tuve que crear una carpeta "a" con un archivo "b.txt" hasta que lo enconrtó jejej...

Con Ustedes el Procedure...

Código Delphi [-]
 
procedure TPrograma.BuscarClick(Sender: TObject);
var busca:string;
begin
busca:= coro.txt;
try
memo1.lines.LoadFromFile(busca);
Except
on EFOpenError do
messageDlg('El Coro NO está cargado',mtError,mbOKCancel,0);
end;
end;


Ahora el tema a resolver es por qué no me aparece el mensaje de error de la exepcion sino que se detiene la ejecución del programa con el EFOpenError.

Pero de nuevo mil gracias a todos.

roman 19-07-2007 02:01:07

Cita:

Empezado por sac
Muchos se confundían el .txt del archivo con la propiedad text del edit.

Estee.. ¿nos confundíamos? ¿Nosotros?

// Saludos

sac 19-07-2007 16:55:34

Cita:

Empezado por sac
no Roman lo que pasa es que yo uso una variable que llamo busca de tipo string. Coro sería el nombre del editl junto con su propiedad text de donde extraigo la cadena de caracteres que va a buscar en los nombres de los txt.
Por eso queda:
busca:=coro.text que sería lo mismo que decir:
variable:=edit.text

Si, se confundían... acá lo explicaba bien...
denme un poco de crédito a mi tambien... yo también sueño con ayudar a otros y ser moderador de clubdelphi.. por qué no puede ser dentro de ... algunos años jeje.


La franja horaria es GMT +2. Ahora son las 15:10:50.

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