saludos, estoy tratando de hacer un procedimiento que borre registros de un archivo de texto, la clave de esos registros la tengo en un listbox y los registros son aquellos que comienzen con el tabulador, para eso decidi crear un archivo auxiliar para despues copiar los registros que no quiero borrar al archivo con los registros, el codigo es el siguiente, pero el problema es que al terminar el codigo parece que me cierra el archivo original (F), puesto que si trato de volver a acceder a al me marca ERROR I/O 103, espero me puedan ayudar, gracias =)
Código:
procedure TForm3.Button3Click(Sender: TObject);
var
lineaactual,texto :string;
aux: TextFile;
begin
if (ListBox1.ItemIndex <> -1) then begin texto := ListBox1.Items[ListBox1.ItemIndex];
ListBox1.Items[ListBox1.ItemIndex] := ''; end;
if (ListBox1.ItemIndex <> -1) and (FileExists( ExtractFilePath( Application.ExeName ) + 'Musica.DATA' )) then
begin
CopyFile( PAnsiChar(ExtractFilePath(Application.ExeName ) + 'Musica.DATA'),PAnsiChar( ExtractFilePath( Application.ExeName ) + 'aux.DATA'), false);
AssignFile( aux, ExtractFilePath( Application.ExeName ) + 'aux.DATA' );
append(aux);
reset(aux);
Rewrite(F);
while not Eof(aux) do
begin
Readln(aux, lineaactual);
if CompareText(lineaactual, texto)<>0 then
WriteLn(F,lineaactual);
if CompareText(lineaactual, texto)=}0 then
begin
Readln(aux, lineaactual);
while (not Eof(aux)) and (lineaactual[1]=chr(9)) do readln(aux,lineaactual);
Readln(aux, lineaactual);
end;
end;
closefile(aux);
deletefile(ExtractFilePath( Application.ExeName ) + 'aux.DATA' );
end;
BuscarGeneros(); // end
end;