Siempre que hagas consultas de este tipo es bueno que especifiques la base de datos que usas así como el tipo de datos de los campos.
No teniendo esos datos voy a suponer que todoslos campos son enteros.
La consulta podría ser ago así como
Código:
delete from tabla
where
codigo = :codigo and
clave = :clave and
revision = :revision and
(maquina < :primer_valor or maquina > :ultimo_valor)
suponiendo que el rango que no debe abarcar maquina es consecutivo.
Al correr la consulta sustituyes los parámetros:
Código:
Query.ParamByName('codigo').AsInteger := valor de codigo;
Query.ParamByName('clave').AsInteger := valor de clave;
Query.ParamByName('revision').AsInteger := valor de revision;
Query.ParamByName('primer_valor').AsInteger := primer valor del rango;
Query.ParamByName('ultimo_valor').AsInteger := ultimo valor del rango;
// Saludos