TODOPIC

Lenguajes de programación para PC => Delphi => Mensaje iniciado por: delth en 18 de Abril de 2008, 20:00:34

Título: Leer y Escribir txt file
Publicado por: delth en 18 de Abril de 2008, 20:00:34
Soy totalmente Nuevo con Delphi y tengo una aplicacion (Delphi Ver3) en la cual necesito Guardar los resultados de prueba en un archivo de texto para posteriormente  accesarlo y leer dichos resultados para graficarlos.
Si alguien a trabajado con una aplicacion de escritura/lectura a archivo de texto le agradeceria que me orientara un poco.

De antemano agradezco su ayuda.
Título: Re: Leer y Escribir txt file
Publicado por: omix en 20 de Abril de 2008, 17:55:39
Hola, trabajar en Delphi con ficheros de texto es bien sencillo, lo que  tienes que hacer es:
1.- Declaras una variables de tipo TextFile.
2.- Asociar a la variable declarada anteriormente el nombre del fichero con la función AssignFile(f: TextFile, name: String);
3.- Abrir el fichero.
     Rewrite(f: TextFile);  //abre o crea el fichero si no existe
     Reset(f:TextFile);      //abre un fichero existente
4.- Escribir o leer del fichero.
     Write(f:TextFile;... );       //escribe en el fichero
     WriteLn(f: TextFile;...);   //escribe en el fichero poniendo final de linea (EOL)
     Read(f: TextFile;...);       //lee del fichero
     ReadLn(f: TextFile);       //lee del fichero hasta un final de linea
5.- Cerrar el fichero con la función CloseFile(f: TextFile);

Ejemplo:

procedure Prueba();
var
   f: TextFile;
begin
   AssignFile(f, 'FicheroPrueba.txt');
   Rewrite(f);
   WriteLn(f,'Esto es una prueba de escritura en un fichero de Texto');
   CloseFile(f);
end;

Un saludo.
Título: Re: Leer y Escribir txt file
Publicado por: delth en 27 de Mayo de 2008, 20:06:41
Muchas Gracias...

 Como haces para escribir el mismo dato 'Esto es una prueba de escritura en un fichero de Texto' en la siguiente linea?
Es decir para el caso en que necesites capturar varios datos ?
Título: Re: Leer y Escribir txt file
Publicado por: omix en 28 de Mayo de 2008, 17:39:01
No acabo de entender lo que quieres decir, te refieres a escribir varios datos en la misma linea o escribir cada dato en una linea distinta?.
En el primer caso, simplemente tienes que colocar los datos separamos por comas en la funcion WriteLn (f, dato1, dato2, dato3, etc); y en el segundo caso solo tienes que hacer WriteLn(f, dato1); WriteLn(f, dato2), etc, cada vez que haces una llamada a la función WriteLn, estas agreando un final de linea y retorno de carro después del dato escrito, con lo que la siguiente escritura se hace en una línea nueva. En cambio si usas Write(f, dato); se escriben todos los datos uno tras otro sin separarlos por un fin de linea y retorno de carro.

Saludos.
Título: Re: Leer y Escribir txt file
Publicado por: eto en 14 de Junio de 2008, 01:08:41
hola a todos, despues de estra escribiendo unos minutos y querer publicar una respuesta me salio que estaban con problemas tecnicos, no importa, la dejo rapido entonces.

puedes usarla funcion APPEND(f), para escribir texto seguido en una linea diferente
el codigo seria asi.

Código: [Seleccionar]
procedure myfuncion()
var
  f: textfile;
  i, dato: integer;
begin
  assignfile(f, 'c:\datos.txt');
  append(f);
  // escribimos 5 datos en lineas diferentes
  for i := 1 to 5 do
  begin
  proceso(dato); // funcion o codigo con el que adquieres los datos, que te devuelve el dato a aescribir 
  writeln(f, dato);
  end;
  closefile(f);
end;

para leerlos, puedes usar el READLN, o meter los datos directamente en un MEMO, y accesar las lineas como quieras.

PD. la segunda forma que te dice omix, recuerda hacerla todo antes de cerrar el archivo, si cierras el archivo despues de cada WRITELN se sobreescribiran tus datos
Título: Re: Leer y Escribir txt file
Publicado por: mariano_pic en 14 de Julio de 2008, 11:36:13

   Para alguien que comienza es mas facil utilizar el componente memo es un componente visual y te permite observar los resultados en tiempo de ejecucion para agregar texto utilisas el siguiente comando:
  memo1.lines.add('Mi texto');
  para leer lo puedes hacer como si fuera ujna matris de dos dimenciones:
  memo1.lines[0] ese la primera linea, memo1.lines[1] la segunda linea.
  cada linea es un string y lo puedes pasar a una cadena de texto.
  tambien puedes acceder a cada caracter como si fuera una matris de dos dimenciones asi:
  memo1.lines[0][1] es el primer caracter de la primera linea.
  usa memo es muy bueno para empezar bye  :mrgreen: