Libérer un objet form appartenant à un array

benladder Messages postés 4 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 8 mai 2010 - 1 mars 2010 à 17:41
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 1 mars 2010 à 18:40
j'ai les 2 unit suivants :

unit principal;

interface

uses
...;

type
TForm1 = class(TForm)

public
doss: array[0..3] of TForm2;
nbre: integer;

var
Form1: TForm1;

implementation

procedure TForm1.FormCreate(...);
var
compt: integer;
begin
nbre := 3;
for compt := 0 to nbre do
doss[nbre] := nil;
end;

procedure TForm1.ButtonClick(...);
begin
if nbre < 4 then
begin
doss[nbre] := TForm2.Create(...);
inc(nbre);
doss[nbre].show;
end;
end;

unit second;

interface

uses
...;

type
TForm2 = class(TForm)

implementation

procedure TForm2.FormClose(...);
begin
doss[???].free;
doss[???] := nil;
end;


Ma question est la suivante :

Dans la procédure TForm2.FormClose ci-haut, comment faire pour libérer
le bon objet à l'intérieur de l'array, pour éviter les mémory leak et les
EAccessViolation ?

Merci à tous !

benladder

1 réponse

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
1 mars 2010 à 18:40
tu dois libérer dans l'appelant (soit TForm1)
0