• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Ziwdon

Uso de ficheiros em PASCAL

5 mensagens neste tópico

Boas.

Será que alguem me podia dar umas luzes, ou um breve resumo, sobre a utilização de ficheiros no pascal.

Isto é, abrir, copiar, reescrever...ficheiros externos.

Já vi uns tutoriais e uns programas de exemplo mas nao consigo perceber como funciona e a maior parte dos programas nem dá. Nota-se que dá um erro qualquer mas como o programa fecha assim que abre nao da para ver qual.

Penso que tenha a ver com o comando "reset(file_identifier)".

Se alguem me pudesse dar só assim umas ideias agradecia.

Fiquem bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Para começar convém teres uma breve ideia do que são ficheiros e para que servem. Ficheiros são, como o nome indica, conjuntos de fichas ou registos de dados. Estes servem para armazenar a informação introduzida pelo utilizador em suportes de físicos como discos rigidos, cds, etc. em vez de apenas armazenados na memória RAM, que sendo uma memória volátil, perde os dados que nela se encontram quando o computador é desligado da corrente eléctrica.

Tens dois tipos de ficheiros: Ficheiros de Texto do tipo *.txt que abres com duplo clique no Bloco de Notas e Ficheiros de Tipos Definidos Pelo Utilizador que podem ter a extensão que o programador entender.

A diferença entre um e outro tipo encontra-se no acesso aos dados, que nos Ficheiros de Texto é sequencial, isto é, o inicio da leitura dos dados não pode ser iniciada num ponto que o utilizador tenha escolhido, começa sempre no primeiro elemento do ficheiro e tem de percorrer todos os elementos existentes até chegar ao local pretendido, enquanto nos Ficheiros de Tipos Definidos Pelo Utilizador pode ser feita de forma aleatória, ou seja, pode ser escolhida a posição a partir da qual vai começar a leitura do ficheiro.

Declaração de uma variável do tipo Ficheiro de Texto

Var <nomevariavel> : Text ;

Depois de feito o primeiro passo, é necessário associar esta variável do tipo Ficheiro de Texto a um ficheiro no disco. Para isso utiliza-se o comando Assign

Assign ( <nomevariavel> , '<nomeficheiro>' ) ;

De seguida, procede-se à criação fisica do ficheiro no disco, através do comando ReWrite

ReWrite ( <nomevariavel> ) ;

Talvez o mais importante, as instruções de escrita no ficheiro são feitas através de um Write / Writeln

Write / Writeln ( <nomevariavel> , Dados1, Dados2 ) ;

Os dados a ser introduzidos são separados por virgulas.

Para o ficheiro ficar preparado para outras operações, necessita de ser fechado, através do comando Close

Close ( <nomevariavel> ) ;

Para reabrir o ficheiro de texto para leitura de dados, utilizamos o comando Reset

Reset ( <nomevariavel> ) ;

A leitura dos dados num ficheiro é feita através de um Read / Readln

Read / Readln ( <nomevariavel> , <variavel_onde_vai_ser_lida_info> ) ;

Finalmente, para acrescentar dados a seguir ao ultimo registo, utiliza-se o comando Append

Append ( <nomevariavel> ) ;

Coloca o cursor para escrita após o ultimo registo.

Para Ficheiros de Tipo Definido Pelo Utilizador estes comandos são identicos.

Declaração da variável

Var <nomevariavel> : File of <tipo_de_dados> ;

De resto os comandos são os mesmos (só não é utilizado o Append).

Outros comandos que convém saberes:

  • Filesize ( ficheiro ) - Retorna o tamanho, em número de componentes, que o ficheiro possui.
  • Filepos ( ficheiro ) - Dá a posição em que o apontador do ficheiro se encontra no momento.
  • Seek ( ficheiro , n ) - Permite o utilizador posicionar-se num determinado ponto do ficheiro, representado pela variável n.

Espero ter ajudado.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Primeiro que tudo muito obrigado pela ajuda.

Agora...há umas coisas que nao percebi bem:

1- Por exemplo quando dizes:

A leitura dos dados num ficheiro é feita através de um Read / Readln

Código

GeSHi (pascal):

Read / Readln ( <nomevariavel> , <variavel_onde_vai_ser_lida_info> ) ;

Qual é a variavel "<variavel_onde_vai_ser_lida_info>" ? Tenho de definir essa variavel no ficheiro ou no programa? Como é que o programa sabe onde está a variavel? Ou a variavel é parte dos dados do ficheiro?

2- Como faço, por exemplo, um programa que lê um ficheiro e mostra (no programa) o que lá está? Ou seja, de modo a que o programa escreva no ecra o que vê no ficheiro.

3- Nao consigo usar o comando "Var <nomevariavel> : File of <tipo_de_dados> ;".

Diz-me sempre que nao encontra o identificador "<tipo_de_dados>".

4- Existe alguma maneira de passar para a linha de baixo num ficheiro .txt? Ou seja escrever "X" na primeira linha e "Y" na segunda?

5- Os comandos "Filesize, Filepos, e Seek" só se podem usar em tipos de ficheiros criados pelo utilizador? É que eu experimentei com ficheiros .txt e não deu.

Acho que é tudo...

Mais uma vez obrigado, e fica bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
1- Por exemplo quando dizes:

A leitura dos dados num ficheiro é feita através de um Read / Readln

Código

GeSHi (pascal):

Read / Readln ( <nomevariavel> , <variavel_onde_vai_ser_lida_info> ) ;

Qual é a variavel "<variavel_onde_vai_ser_lida_info>" ? Tenho de definir essa variavel no ficheiro ou no programa? Como é que o programa sabe onde está a variavel? Ou a variavel é parte dos dados do ficheiro?

A leitura dos dados no ficheiro tem de ser feita para uma variável do mesmo tipo. Por exemplo se no ficheiro tiveres valores numéricos inteiros, tens de fazer a leitura desses dados para uma variável do tipo integer.

2- Como faço, por exemplo, um programa que lê um ficheiro e mostra (no programa) o que lá está? Ou seja, de modo a que o programa escreva no ecra o que vê no ficheiro.

Fazes a tal leitura e escrita dos dados numa variável do mesmo tipo de dados, e depois mandas escrever a variável na qual introduziste os dados do ficheiro

Read ( ficheiro , variavel );
Write ( variavel );

3- Nao consigo usar o comando "Var <nomevariavel> : File of <tipo_de_dados> ;".

Diz-me sempre que nao encontra o identificador "<tipo_de_dados>".

Não sei se me expliquei muito bem sobre o que eram os "tipos de dados". Por exemplo

Var <nomevariavel> : File of Integer / Real / String ...

4- Existe alguma maneira de passar para a linha de baixo num ficheiro .txt? Ou seja escrever "X" na primeira linha e "Y" na segunda?

Acho que isso, como num programa em sim, depende se utilizas write ou writeln. Não te podes é esquecer de utilizar o comando Append para colocar o cursor no ultimo elemento do ficheiro.

5- Os comandos "Filesize, Filepos, e Seek" só se podem usar em tipos de ficheiros criados pelo utilizador? É que eu experimentei com ficheiros .txt e não deu.

Sim, penso que só funcionam nos Ficheiros de Tipo Definido Pelo Utilizador, devido a poderem ser acedidos de forma aleatória, ao contrário dos ficheiros de texto.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok agora estou totalmente esclarecido e ja consegui testar tudo com sucesso.

Um muito obrigado pela ajuda :P

Obrigado e fica bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora