Veo que borras el registro de la tabla y luego haces un
Next en el bucle. Creo que así te saltarás registros de la taba.
Te recomiendo hacer una lista de los ficheros a borrar y tratarlos a todos de la misma manera (
if FileExists().. if DeleteFile())
También te recomiendo utilizar
while not EOF para evitar errores cuando refrescas datos en el bucle (borrar registros) y la cantidad varía.
Además de esto. Pon el nombre del fichero en el mensaje de error. Puede que veas que sale vacío o con cosas raras y te des cuenta de algún error en el algoritmo.
Código Delphi
[-]
ListaFicheros := TStringList.Create;
try
while not FDQuery.EOF do
begin
ListaFicheros.Clear;
ListaFicheros.Add(FDQueryParametrosPAEXINGRESOSXML.Value+'\'+FDQuery.FieldByName('NOMBRE_ARCHIVO').V alue+'.XML');
ListaFicheros.Add(FDQueryParametrosPAEXINGRESOSPDF.Value+'\'+FDQuery.FieldByName('NOMBRE_ARCHIVO').V alue+'.PDF');
TodoBorrado := True;
for i := ListaFicheros.Count -1 downto 0 do
begin
if not FileExists(ListaFicheros[i]) then
ListaFicheros.Delete(i)
else
begin
if DeleteFile(ListaFicheros[i]) then
ListaFicheros.Delete(i)
else
begin
TodoBorrado := False;
showMessage('Hubo un error al eliminar el archivo PDF' + ListaFicheros[i] + #13#10 + 'Favor de Eliminar Manualmente.');
end;
end;
end;
if TodoBorrado then
DModuloEmpresa.FDQuery.Delete
else
begin
FDQuery.Next;
end;
end;
finally
ListaFicheros.Free;
end;