Fórum Sobre Objetos Irmãos com valores diferentes #282494
20/05/2005
0
Bruno Belchior
Curtir tópico
+ 0Posts
20/05/2005
Massuda
type TDataSource = class(... private FDataSet: TDataSet; procedure SetDataSet(Value: TDataSet); public constructor Create(...); property DataSet: TDataSet read FDataSet write SetDataSet; ... constructor TDataSource.Create(...); begin ... FDataSet := TDataSet.Create(...); ... end; procedure TDataSource.SetDataSet(Value: TDataSet); begin FDataSet := Assign(Value); end;
type TDataSource = class(... private FDataSet: TDataSet; public property DataSet: TDataSet read FDataSet write FDataSet; ...
No primeiro caso, quando você atribui um valor a TDataSource.DataSet, você tem na realidade dois objetos independentes (que no momento da atribuição tinham valores iguais) enquanto no segundo caso você tem um único objeto que está sendo compartilhado.
Pelo que você escreveu, imagino que seus componentes sejam parecidos com o primeiro caso.
Gostei + 0
20/05/2005
Massuda
procedure TDataSource.SetDataSet(Value: TDataSet); begin FDataSet.Assign(Value); end;
Gostei + 0
21/05/2005
Bruno Belchior
Gostei + 0
22/05/2005
Massuda
Gostei + 0
23/05/2005
Bruno Belchior
Gostei + 0
23/05/2005
Massuda
type TDataSource = class(... private FDataSet: TDataSet; public property DataSet: TDataSet read FDataSet write FDataSet; ...
Não sei se vai ficar claro, mas se você atribuir um DataSet externo à propriedade DataSource.DataSet, teremos...[list:d0c1555d8b][*:d0c1555d8b]@DataSet <> @DataSource.DataSet[*:d0c1555d8b]DataSet = DataSource.DataSet[/list:u:d0c1555d8b]...pois é o [b:d0c1555d8b]mesmo valor armazenado em locais diferentes[/b:d0c1555d8b].
Gostei + 0
23/05/2005
Bruno Belchior
imagino que no caso eu liberei apenas as propriedades do DataModule... então ele criava uma nova instância do meu objeto a cada execução do teste mas a instância do DataModule era a mesma... estou certo? e no caso de sim de qualquer forma meu objeto setado no componente não deveria ter as mesmas propriedades mesmo assim?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)