Ir ao conteúdo
  • Cadastre-se

Erro ao tentar escrever em arquivo.


MVJunior

Posts recomendados

Tá aparecendo o erro i/o error 32 einouterror no seguinte código abaixo, quando tento escrever num arquivo:


procedure insereArtista(nome:String;nome_musica:String);
var
existe:Boolean;
contalinha:Integer;
linha:String;
begin
//Criar o índice dos artistas
AssignFile(arqArtista,nome+'.txt');
{$i-}
reset(arqArtista);
{$i+}
if (IOResult<>0) then
begin
Rewrite(arqArtista);
for contaLinha:=0 to 19 do
begin
Writeln(arqArtista,'*');
end;

end;
CloseFile(arqArtista);
//Verificar os cantores existentes
AssignFile(arqIndice,'listaArtista.txt');
{$i-}
reset(arqIndice);
{$i+}
if (IOResult<>0) then
begin
Rewrite(arqIndice);
end;
existe:=false;
while( not eof(arqIndice) ) do
begin
readln(arqIndice,linha);
if( linha = nome ) then
begin
existe:=true;
end;
end;
if( existe = false ) then
begin
Append(arqIndice); // Nessa linha está aparecendo o erro.
writeln(arqIndice,nome);
end;
CloseFile(arqIndice);
end;

// Procedimento que chama o insereArtista
procedure TfrmPrincipal.btnTesteClick(Sender: TObject);
var
j:Integer;
linha,artista,musica:String;

begin
AssignFile(Arquivo,'teste.txt');
reset(Arquivo);
artista:='';
musica:= '';
while( not eof(Arquivo)) do
begin
readln(Arquivo,linha);
if(linha <> null ) then
begin
for j:=0 to Length(linha) do
begin
if( linha = '***cifra***' ) then
begin
readln(Arquivo,linha);
artista:= Copy(linha,0,pos('-',linha)-1);
musica:= Copy(linha,pos('-',linha)+2,length(linha));
insereArtista(artista,musica);
end;
end;
end;
end;
// CloseFile(Arquivo);
for j:=0 to cmbCantor.ItemHeight do
begin
cmbCantor.ItemIndex:=j;
if( cmbCantor.Text = artista ) then
begin
break;
end
else
begin
cmbCantor.Items.Add(artista);
break;
end;
end;
end;

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Olá MVJunior,

Eu vi o seu código e vou lhe dar uma dica, não use o close depois que você gravar, deixe para usar no final do programa na ultima liha do código. Muita gente se enrrola nessa parte. Existe o comando de abrir o arquivo que é o reset porque?(Os programas não trabalham direto no arquivo eles carregam as informações do arquivo e armazena no manipulador do arquivo na memoria (arqArtista)) se você usar o close, logo você precisarar para ler ou para gravar outras informações, mas o manipulador do arquivo foi fechado por você antes da hora daí ocorre o erro. Mais uma dica, o reset e o close devem ser usados apenas uma vez, o reset no começo do codigo e o close no final do codigo, entre eles você pode usar a vontade o read ou readln(para textos) write ou writeln, seek, filesize em fim todos os comandos para manipulação de arquivos.

Espero ter te ajudado e que isso resolva o problema, caso contrário é só perguntar.

Link para o comentário
Compartilhar em outros sites

Olá MVJunior,

Eu vi o seu código e vou lhe dar uma dica, não use o close depois que você gravar, deixe para usar no final do programa na ultima liha do código. Muita gente se enrrola nessa parte. Existe o comando de abrir o arquivo que é o reset porque?(Os programas não trabalham direto no arquivo eles carregam as informações do arquivo e armazena no manipulador do arquivo na memoria (arqArtista)) se você usar o close, logo você precisarar para ler ou para gravar outras informações, mas o manipulador do arquivo foi fechado por você antes da hora daí ocorre o erro. Mais uma dica, o reset e o close devem ser usados apenas uma vez, o reset no começo do codigo e o close no final do codigo, entre eles você pode usar a vontade o read ou readln(para textos) write ou writeln, seek, filesize em fim todos os comandos para manipulação de arquivos.

Espero ter te ajudado e que isso resolva o problema, caso contrário é só perguntar.

Beleza,obrigado pela dica!!! Tópico resolvido :cool:

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...