Hay varias formas de borrar todos registros de una tabla. Una de ellas es la que has puesto tú, pero es la menos eficiente. Peor (de eficiencia) cuantos más registros existan en la tabla.
Digamos que si estás utilizando componentes (como estás haciendo tú), en este caso parece un
TTable, puedes utilizar el método
EmptyTable, que en un sólo paso borra todos los regstros de la tabla.
Revisa este link:
https://docwiki.embarcadero.com/Libr...ble.EmptyTable
Estaría bien tanto con el código que has puesto antes, como con el
EmptyTable, utilizar los métodos
EnebleControls y
DisableControls, para bloquear el refresco visual (acelera mucho las operaciones, sobre todo cuando hay muchos registros).
Revisa este link:
https://docwiki.embarcadero.com/Libr...EnableControls
Ahí mismo tienes un ejemplo de utilización.
Más rápido que los anteriores (que usan componentes) es hacerlo directamente sobre la Base de datos, con un
TQuery por ejemplo (como ya te ha comentado [oscarac]), y con la SQL sencilla para borrar todos los registros.
Con todo esto deberías poder borrar TODOS los registros de la tabla. Cualquiera de los métodos, más lento o más debería hacerlo.
Otro problema es
porqué no te borra todos los registros (cuando debería hacerlo, como te he dicho), con tu código.
Sólo se me ocurre que tengas relaciones entre registros y por temas de claves foráneas (por ejemplo) y eso esté impidiendo que se borren.
¿Es posible?
¿Estás capturando excepciones de alguna forma que enmascaren esos errores?