sabing Posted July 1, 2012 at 05:36 PM Report #466693 Posted July 1, 2012 at 05:36 PM (edited) Program lol; uses crt; Type Agenda = Record nome:String; End; Var Registro:Agenda; Texto:Text; Linha:String; Begin Write('Digite o nome : ' ); Read(Registro.nome); If IOResult <> 0 then // seria essa condição? Begin Writeln('Ja existe'); End Else Begin Assign(Texto,'Arquivo.txt'); ReWrite(Texto); Writeln(Registro.nome); Close(Texto); End; End. O arquivo quando nao existe ele esta criando legal, o problema e quando ele existe ele esta distruindo o existente e criando um outro por que o que eu estou fazendo de errado? eu estou usando o free pascal Edited July 1, 2012 at 05:44 PM by nunopicado Adicionadas tags GeShi
thoga31 Posted July 1, 2012 at 05:47 PM Report #466697 Posted July 1, 2012 at 05:47 PM (edited) O ReWrite faz o seguinte: - o ficheiro não existe: cria; - o ficheiro existe: recria, ou seja, apaga o existente e inicia um novo com o mesmo nome. Para ler um ficheiro sem o apagar, mas sem ter a oportunidade de o editar, utiliza-se o Reset. Além disso, o IOResult, ali naquele sítio, não vai fazer nada. Edited July 1, 2012 at 05:50 PM by thoga31 Knowledge is free!
nunopicado Posted July 1, 2012 at 05:52 PM Report #466698 Posted July 1, 2012 at 05:52 PM (edited) O que estás a fazer mal é que estás a usar sempre o ReWrite. Este comando serve para criar um ficheiro, ou seja, se não existe cria-o, se existe apaga-o e cria um por cima (exactamente o que te está a acontecer). O que precisas é, antes de mais, tentar abrir o ficheiro para leitura e escrita (sem o criar). Se funcionar, maravilha, se não funcionar, aí sim, crias um novo. Outra coisa é que estás a usar o IOResult sem primeiro tentar abrir o ficheiro, pelo que a função não terá valor nenhum com significado para o caso. E mais uma, ao escrever o registo, está-te a faltar dizer que vai escrever no ficheiro. Como tens, ele só escreve no ecrã. Exemplo: . . begin Assign(Texto,'Arquivo.txt'); // Primeira coisa é atribui o nome do ficheiro à variável {$i-} // Desactivar o controlo de erros nativo, para poder testar se o ficheiro existe sem o compilador dar erro Reset(Texto); // Abre o ficheiro para leitura e escrita (não o cria de novo se não existir) {$i+} // Já se pode reactivar o controlo de erros if IOResult<>0 // Testa o resultado da abertura do ficheiro: then rewrite(Texto); // Se for diferente de 0, é porque o ficheiro não existia, e portanto, cria-o Writeln(Texto,Registro.nome); // Escreve no ficheiro o conteúdo de Registro.nome Close(Texto); // Fecha e grava o ficheiro end. PS: Existe um tópico no forum com tudo isto descrito em pormenor, é preciso procurar! 😉 Edited July 1, 2012 at 05:53 PM by nunopicado "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
sabing Posted July 1, 2012 at 05:57 PM Author Report #466699 Posted July 1, 2012 at 05:57 PM (edited) me explica melhor esta dando erro Program lol; uses crt; Type Agenda = Record nome:String; End; Var Registro:Agenda; Texto:Text; Linha:String; Begin Write('Digite o nome : ' ); Read(Registro.nome); Assign(Texto,'Arquivo.txt'); // seria isso? Reset(Texto); If IOResult <> 0 then Begin Writeln('Ja existe'); End else Begin Assign(Texto,'Arquivo.txt'); // seria isso? ReWrite(Texto); Writeln(Registro.nome); Close(Texto); End; End. Edited July 1, 2012 at 06:01 PM by thoga31 GeSHi
thoga31 Posted July 1, 2012 at 06:02 PM Report #466700 Posted July 1, 2012 at 06:02 PM Viste bem o código do @nunopicado? Convido-te a olhar melhor para ele para veres como é que o IOResult vai funcionar devidamente Knowledge is free!
sabing Posted July 1, 2012 at 06:03 PM Author Report #466701 Posted July 1, 2012 at 06:03 PM funcionou! obrigado
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