Powiel możliwe:
Reference object instance created using “with” in DelphiJak uzyskać odniesienie do obiektu TQuery utworzonego w instrukcji WITH?
Jedną z metod, które używam do tworzenia obiektów zapytań w Delphi następująco pierwszą próbkę kodu. Daje mi odniesienie do obiektu i mogę następnie przekazać obiekt do funkcji.
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;
Czy jest to również możliwe w instrukcji WITH, gdzie twój obiekt Create zawarty jest w instrukcji WITH?
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;
Czy mogę przekazać ten dynamiczny obiekt do funkcji `funcDisplayDataSet (TQuery)?
Chciałbym tylko wiedzieć, czy jest to możliwe. Nie szukam podsumowania , dlaczego instrukcja WITH jest zła lub dobra. W tej rozmowie są inne posty dotyczące przepływu StackOver. *
+1 dla interesującej kwestii, choć podejrzewam, że nie istnieje sposób to zrobić to czysto/wyraźnie, jeśli w ogóle. Jeśli rozwiązaniem okaże się jakiś voodoo, który sprawi, że następny facet będzie musiał pójść i sprawdzić, jak to zrobiłeś, nie powinieneś tego robić. –
To samo pytanie tutaj [referencja-obiekt-wystąpienie-utworzone-używanie-z-w-delphi] (http://stackoverflow.com/questions/791181/reference-object-instance-created-using-with-in-delphi) , z rozwiązaniem dostarczonym przez Aleksandra. –
Po prostu użyj zmiennej lokalnej i weź z.Jeśli pójdziesz zrobić złowrogi hak, tylko po to, by trzymać ZO, to będę musiał cię wytropić i spocząć. –