Instanciar objetos

Delphi

16/12/2011

Bom dia. Gostaria da ajuda de vocês em uma procedure para instanciar e finalizar classes que são criadas dinamicamente. Eu passo um array de classes. Segue abaixo:

procedure prClasses( FClasses : array of TObject; FOpr : String );
var
vsmiI : SmallInt;
begin
if FOpr = F then // Finalizar
begin
for vsmiI := 0 to Pred( Length( FClasses ) ) do
begin
if Assigned( FClasses[ vsmiI ] ) then
FClasses[ vsmiI ].Destroy;
end;
end
else // Create
for vsmiI := 0 to Pred( Length( FClasses ) ) do
begin
if not( Assigned( FClasses[ vsmiI ] ) ) then
FClasses[ vsmiI ] := TObject.Create;
end;
end;

Uso em um formulário como exemplo:
.
.
.
private
FCC : TCliente;
FCEC : TEndCli;

procedure TFormCadClientes.FormCreate(Sender: TObject);
begin
inherited;
//if not( Assigned( FCC ) ) then
//FCC := TCliente.Create;
//if not( Assigned( FCEC ) ) then
//FCEC := TEndCli.Create;
prClasses( [ FCC, FCEC ], C );
end;

procedure TFormCadClientes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
prClasses( [ FCC ], F );
Action := caFree;
FormCadClientes := nil;
inherited;
end;

Na seção private do form, declaro a duas classes que quero criar, TCliente e TEndCli e a operação(F = Destruir C = Create). Para a opção F tudo ocorre normalmente, mas para a opção C os objetos são criaddos
mas na hora de usar o objeto acontece um erro de access violation.
if FCC.fnLoad( FIntID ) then // Erro de access violation
begin

end;
Jordelino Santos

Jordelino Santos

Curtidas 0

Respostas

Gustavo Bretas

Gustavo Bretas

16/12/2011

Jordelino, pelo que eu entendi, esta dando access violation pq vc cria o objeto dentro do array no escopo da procedure e esta tentando acessar os métodos pela classe, de uma olhada no padrão Singleton, talvez possa te ajudar.

http://pt.wikipedia.org/wiki/Singleton
GOSTEI 0
POSTAR