Você está na página 1de 6

Arquivos em Pascal

O Pascal possui dois tipos de arquivos: a) Arquivos FILE Conhecido por Arquivo randmico, ou de acesso aleatrio. possvel buscar uma determinada informao em qualquer posio, sem necessidade de percorrer todo o arquivo at localizar a informao desejada. O acesso a informao direto. o tipo de arquivo mais usado no Pascal. Sintaxe : <Nome da varivel> : File of <tipo>; b) Arquivos TEXT

Conhecido por arquivo seqencial. Tipo especial de arquivo que pode ser editado normalmente atravs de um editor de textos qualquer. dito seqencial porque a leitura tem que ser feita seqencialmente do incio ao fim do arquivo. Sintaxe :
<Nome da varivel> : Text

Por exemplo, considere o conjunto de dados sobre as pessoas: Nome (string); Idade (integer); Cada conjunto de dados sobre uma determinada pessoa recebe o nome de registro. Um registro composto por tipos de dados diferentes. Cada dado que compe o registro (nome, idade, etc) chamado de campo.

Exemplos de Programa para manipular arquivos FILE: Program grava_pessoas; Type Registro = Record nome : String; idade : integer; End; Var arquivo : File of Registro; reg : Registro; continua : char; Begin Assign(arquivo, 'pessoas.dat'); Rewrite(arquivo); Repeat Write('Digite o Nome: '); Readln(reg.nome);

Write('Digite a Idade: '); Readln(reg.idade); Write(arquivo, reg); Writeln('Deseja continuar (s/n)? '); continua := uppercase(ReadKey()); Until continua = 'N'; Close(arquivo); End.

Usando as diretivas de compilao: Program grava_pessoas; Type Registro = Record nome : String; idade : integer; End; Var arquivo : File of Registro; reg : Registro; continua : char; Begin Assign(arquivo, 'pessoas.dat');
{$I-} Reset(arquivo); {$I+} If IOResult = 0 then Seek(arquivo, FileSize(arquivo)) {Vai p/fim do arquivo} Else ReWrite(arquivo);

Repeat Write('Digite o Nome: '); Readln(reg.nome); Write('Digite a Idade: '); Readln(reg.idade); Write(arquivo, reg); Writeln('Deseja continuar (s/n)? '); continua := uppercase(ReadKey()); Until continua = 'N'; Close(arquivo); End. {$I} uma diretiva de compilao para checagem de erros de entrada e/ou sada. Ela retorna um cdigo de erro em uma funo chamada IOResult. Programa para ler o arquivo: Program le_pessoas; Type Registro = Record nome : String; idade : integer;

End; Var arquivo : File of Registro; reg : Registro; continua : char; Begin Assign(arquivo, 'pessoas.dat'); Reset(arquivo); While not EOF(Arquivo) do Begin Read(arquivo, reg); Writeln('Nome: ', reg.nome, ' - Idade: ', reg.idade); End; Close(arquivo); End. Exemplos de Programa para manipular arquivos TEXT: Program grava_algo; Var Arquivo : Text; algo : String; i : integer; Begin Assign(Arquivo, 'algo.txt'); Rewrite(Arquivo); Write('Digite algo: '); Readln(algo); For i := 1 to 10 do Writeln(Arquivo, algo); Close(Arquivo); End.

Program le_algo; Var Arquivo : Text; algo : String; Begin Assign(Arquivo, 'algo.txt'); Reset(Arquivo); While not EOF(Arquivo) do Begin Readln(Arquivo, algo); Writeln(algo); End; Close(Arquivo); End.

Operaes com arquivos


Assign Associa o nome externo de um arquivo a uma varivel do tipo FILE ou TEXT. Sintaxe: Assign(Var nome-pascal:File; nome-externo:String); Exemplo: Assign(cadastro,'C:\cadastro.dat'); Reset Abre um arquivo j existente. Caso o arquivo no exista, haver um erro de execuo. Sintaxe: Reset(Var arquivo:File); Exemplo: Reset(cadastro); Rewrite Permite criar e abrir um novo arquivo. Caso o arquivo j exista, ter seu contedo eliminado e ser gerado um novo arquivo. Sintaxe: Rewrite(Var arquivo:File); Exemplo: Rewrite(cadastro); Append Abre um arquivo TEXT para incluso de novas informaes do tipo Write-Only (somente para escrita). Caso o arquivo no exista ocorrer um erro de execuo. As incluses se processam no final do arquivo. Sintaxe: Append(Var arquivo:File); Exemplo: Append(cadastro); Close Fecha um arquivo aberto. Sintaxe: Close(Var arquivo:File); Exemplo: Close(cadastro); Erase Apaga um arquivo. Sintaxe: Erase(Var arquivo:File); Exemplo: Erase(cadastro);

Rename Renomeia um arquivo. Sintaxe: Rename(Var arq_ant:File, arq_novo:File); Exemplo: Rename(tmp, cadastro); Write / Writeln Grava informaes em um arquivo. Aps a execuo, o ponteiro de registros do arquivo ser deslocado um registro para a frente. Sintaxe: Write(arquivo:File; registro:Record); Exemplo: Write(cadastro, registro); Read / Readln Atribui um valor obtido por um dispositivo de entrada a uma varivel. Esse dispositivo pode ser um arquivo. Aps a execuo, o ponteiro de registros do arquivo ser deslocado um registro para a frente. Sintaxe: Read(arquivo:File; registro:Record); Exemplo: Read(cadastro, registro); EOF End of File (Fim de Arquivo) Esta uma funo lgica que retorna o valor TRUE quando for encontrada a marca de fim de arquivo. Sintaxe: EOF(Var arquivo:File); Exemplo: fim := EOF(cadastro); Seek Move o ponteiro do arquivo para uma determinada posio. Sintaxe: Seek(Var arquivo:File; posio:Longint); Exemplo: {posiciona o ponteiro no 6 registro} Seek(cadastro, 5); FilePos Esta funo retorna a posio atual do ponteiro do arquivo. Sintaxe: FilePos(Var arquivo:File) : Longint; Exemplo: ponteiro := FilePos(cadastro);

FileSize Esta funo retorna a quantidade de registros do arquivo. Sintaxe: FileSize(Var arquivo:File) : Longint; Exemplo: tamanho := FileSize(cadastro);