Carloz Posted May 15, 2006 at 07:51 PM Report #27613 Posted May 15, 2006 at 07:51 PM 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 "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
maiden Posted May 15, 2006 at 09:26 PM Report #27634 Posted May 15, 2006 at 09:26 PM 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, 1 Report
Carloz Posted May 16, 2006 at 01:25 PM Author Report #27680 Posted May 16, 2006 at 01:25 PM 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. "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
maiden Posted May 16, 2006 at 07:02 PM Report #27732 Posted May 16, 2006 at 07:02 PM 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,
Carloz Posted May 16, 2006 at 08:45 PM Author Report #27752 Posted May 16, 2006 at 08:45 PM ok agora estou totalmente esclarecido e ja consegui testar tudo com sucesso. Um muito obrigado pela ajuda 😛 Obrigado e fica bem "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now