DMarlon Studio

Lección 19 · 19 de 20

Archivos de texto · Pascal

Escriba y lea archivos de texto en Pascal con AssignFile, Rewrite, Append, Reset, ReadLn y CloseFile: una lista de la compra guardada en disco.

Pascal · Archivos de texto en DMarlon Studio: el código del ejemplo y su salida en la terminal

Un archivo de texto se maneja con una variable de tipo `TextFile`. `AssignFile(f, 'shopping.txt')` la asocia al nombre del archivo, que se crea en la carpeta actual, junto al programa.

`Rewrite` crea el archivo para escribir en él (si ya existía, lo vacía) y WriteLn(f, ...) escribe igual que en la consola, pero con el archivo como primer argumento. `CloseFile` lo cierra y se asegura de que todo queda guardado.

`Append` vuelve a abrir el archivo y escribe al final, sin borrar lo que había: así se añade el café a la lista.

`Reset` lo abre para leer desde la primera línea. El bucle while not Eof(f) lee una línea con ReadLn(f, line) hasta llegar al final (`Eof`, *end of file*) y numera cada producto con count.

Abrir para leer un archivo que no existe provoca un error de ejecución. Antes se puede comprobar con `FileExists`, de SysUtils: notes.txt no existe y da FALSE.

Código · main.pas

program main;uses  SysUtils;var  f: TextFile;  line: String;  count: Integer;begin  // Rewrite creates the file (or empties it) to write in it.  AssignFile(f, 'shopping.txt');  Rewrite(f);  WriteLn(f, 'bread');  WriteLn(f, 'milk');  CloseFile(f);  // Append opens it again and writes at the end.  Append(f);  WriteLn(f, 'coffee');  CloseFile(f);  // Reset opens it to read, from the first line.  Reset(f);  count := 0;  while not Eof(f) do  begin    ReadLn(f, line);    Inc(count);    WriteLn(count, '. ', line);  end;  CloseFile(f);  WriteLn('Items: ', count, ' | Is there a notes.txt? ', FileExists('notes.txt'));end.

Salida · fpc main.pas && ./main

1. bread
2. milk
3. coffee
Items: 3 | Is there a notes.txt? FALSE

Para recordar

  • AssignFile asocia la variable al nombre del archivo.
  • Rewrite crea, Append añade y Reset abre para leer.
  • WriteLn(f, ...) y ReadLn(f, ...) escriben y leen líneas.
  • Eof(f) dice si se ha llegado al final; CloseFile cierra.

Ejercicio

Guarde en otro archivo, prices.txt, un precio por línea (2.50, 1.10 y 3.75); léalo con ReadLn(f, price) en una variable Double y escriba el total.