Y que conste que hay ejemplos en los que
WITH puede tener sentido (y creo que es para lo que se pensó) como puede ser algo así (donde la parte a eliminar es muy grande):
Código Delphi
[-]
dmClientesMain.objCliente.QueryClientes.FieldByName('ID').AsString := ID;
dmClientesMain.objCliente.QueryClientes.FieldByName('Nombre').AsInteger := 'Nombre';
dmClientesMain.objCliente.QueryClientes.FieldByName('Desc').AsString := 'Descripcion';
dmClientesMain.objCliente.QueryClientes.FieldByName('Telefono').AsString := '123456789';
...
Pero es que para estos casos, creo que esto:
Código Delphi
[-]
var
q:TQuery;
begin
q := dmClientesMain.objCliente.QueryClientes;
q.FieldByName('ID').AsString := ID;
q.FieldByName('Nombre').AsInteger := 'Nombre';
q.FieldByName('Desc').AsString := 'Descripcion';
q.FieldByName('Telefono').AsString := '123456789';
...
Es más claro que esto, ya sea usando
it o
idem:
Código Delphi
[-]
with dmClientesMain.objCliente.QueryClientes do
begin
it.FieldByName('ID').AsString := ID;
it.FieldByName('Nombre').AsInteger := 'Nombre';
it.FieldByName('Desc').AsString := 'Descripcion';
it.FieldByName('Telefono').AsString := '123456789';
end;
...
Entre otras cosas porque <it> o <idem> me dan un significado "genérico", <q> en este caso, para mi tiene un significado (de query) que además me hace más claro entender el código.
Al igual que si uso frm (para un TForm), f (para un TField), ds (para un TDataSet),...