Cita:
Empezado por ingel
Estas querys se liberan al liberar el form uUtiles ? (lo que se hace al cerrar la aplicacion) con lo cual se estarian creando cientos de querys sin liberar... o se libera cuando devuelve la llamada que le hizo algun form ?
|
Pero... esta decisión no la toma nadie por vos... que sos quien lo decide.
Si no los estas liberando, al ser propiedad de Application, se liberarán hasta le final de la ejecución, cosa que no me parece adecuada para la mayoría de los casos. En todo caso, quien sabe lo que pretende con esto y las necesidades específicas del programa sos vos, o al menos debieras saberlo..
En general es conveniente liberar la memoria tan pronto como el objeto deje de usarse. Así, si una función devuelve un TQuery, lo ideal sería algo como:
Código Delphi
[-]
Function UnQuery(Parametros : TipoParametros) : TQuery;
Begin
result := TQuery.Create(nil);
result.HagoLoQueTengoQueHacer;
end;
Procedure TForm1.Button1Click(Sender : TObject);
Begin
with UnQuery(Parametros) do
try
ProcesarElQuery;
finally
Free; end;
end;
Procedure TForm1.Button2Click(Sender : TObject);
Var
Query : TQuery;
Begin
Query := UnQuery(Parametros);
try
ProcesarElQuery(Query);
finally
Query.Free;
end;
end;
Type
TForm1 = class(TForm)
private
FQueryUno : TQuery;
end;
Procedure TForm1.Button3Click(Sender : TObject);
Begin
if not assigned(FQueryUno) Then
FQueryUno := UnQuery(Parametros);
FQueryUno.First;
etcetera;
end;
Procedure TForm1.Form1Destroy(Sender : TObject);
Begin
if assigned(FQueryUno) Then
FQueryUno.Free;
end;
Procedure TForm1.ButtonYaPerdiLaCuentaClick(Sender : TObject);
Var
Query : TQuery;
Begin
Query := UnQuery(Self, OtrosParametros);
end;
Cita:
Empezado por roman
pd: traducción de términos con dedicatoria a jachguate
|
¿hay algo malo en mi forma de traducir los términos?