Duplicar posible:
Reference object instance created using “with” in Delphi¿Cómo se obtiene una referencia a un objeto TQuery creado en una declaración WITH?
Un método que utilizo para crear objetos de consulta en Delphi sigue el primer ejemplo de código. Me da una referencia al objeto y puedo pasar el objeto a una función.
procedure SomeProcedure;
var
qry: TQuery;
begin
qry := TQuery.Create(nil);
with qry do
begin
Connection := MyConn;
SQL.Text := 'SELECT * FROM PEOPLE';
Open;
funcDisplayDataSet(qry);
Free;
end;
end;
¿Es también posible hacer esto en una instrucción WITH donde su objeto en Crear contenida en la declaración CON?
procedure SomeProcedure;
begin
with TQuery.Create(nil) do
begin
Connection := MyConn;
SQL.Text := 'SELECT * FROM PEOPLE';
Open;
funcDisplayDataSet(???); // Here I'm unsure how to pass the object created...
Free;
end;
end;
¿Puedo pasar este objeto dinámico a una función como `funcDisplayDataSet (TQuery)?
Me gustaría saber si esto es posible. No estoy buscando un resumen sobre por qué la declaración WITH es mala o buena. Hay otras publicaciones de en el flujo de StackOver con esa discusión. *
+1 para la pregunta interesante, aunque sospecho de que no hay una manera de hacerlo es limpio/claro, si es que lo es. Si la solución resulta ser un vudú que haría que el próximo tipo tenga que ir y mirar cómo lo hiciste, entonces no deberías hacerlo. –
La misma pregunta aquí [reference-object-instance-created-using-in-delphi] (http://stackoverflow.com/questions/791181/reference-object-instance-created-using-with-in-delphi) , con una solución provista por Alexander. –
Solo usa una variable local y saca el WITH.Si vas a hacer algún truco del mal, solo para mantener al CON ahí dentro, tendré que buscarte y jadear. –