Hola:
La única forma de liberar la clase es llamando al método destroy, que a su vez hace free.
¿Porqué es necesario crear un destructor de clase?.
Aquí tienes el código completo:
Código Delphi
[-]
TConsultarCliente = class
private
Conexion : TIfxConnection;
public
function Buscar(empresa : integer; anyo integer) : TDataset;
constructor Create(Conexion : TIfxConnection);
destructor Destroy;
end;
constructor TConsultarCliente.Create(Conexion: TIfxConnection);
begin
self.Conexion := conexion;
end;
destructor TConsultarCliente.Destroy;
begin
self.free;
end;
function TConsultarCliente.Buscar(empresa : integer; cliente : integer) : TDataset;
begin
....
result := consulta;
end;
// La llamado desde una clase tform
procedure TForm1.Button1Click(Sender : TObject)
var
ConsultarCliente : TConsultarCliente;
Dataset : TDataset;
begin
ConsultarCliente := TConsultarCliente.Create(IfxConnection);
Dataset := ConsultarCliente.Buscar(1,5);
showmessage(Dataset.fieldbyname('razon'.asstring);
// ConsultarCliente.Free -> No hace nada
Consultarcliente.Destroy; // Libera la clase
end;