Eventuali duplicati:
Reference object instance created using “with” in DelphiCome si ottiene un riferimento a un oggetto TQuery creato in un'istruzione WITH?
Un metodo che uso per creare oggetti di query in Delphi segue il primo esempio di codice. Mi dà un riferimento all'oggetto e posso quindi passare l'oggetto a una funzione.
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;
E 'anche possibile fare questo in un comunicato in cui il vostro CON oggetto Crea nel contenuta nella dichiarazione 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;
Posso passare questo oggetto dinamico a una funzione come `funcDisplayDataSet (TQuery)?
Vorrei solo sapere se questo è possibile. Non sto cercando un riepilogo sul motivo per cui l'istruzione WITH è buona o cattiva. Ci sono altri post sul flusso StackOver con quella discussione. *
+1 per la domanda interessante, anche se ho il sospetto che non ci sia un modo per fare chiaramente/chiaramente, se non del tutto. Se la soluzione si rivela essere un voodoo che farebbe sì che il prossimo ragazzo debba andare a cercare come hai fatto, allora non dovresti farlo. –
La stessa domanda qui [reference-object-instance-created-using-with-in-delphi] (http://stackoverflow.com/questions/791181/reference-object-instance-created-using-with-in-delphi) , con una soluzione fornita da Alexander. –
Basta usare una variabile locale e togliere il WITH.Se vai a fare qualche trucco malvagio, solo per tenere la CON dentro, poi dovrò rintracciarti e metterti nei pantaloni. –