effectivement, il s'agit d'écrire lstList := TList.create;
là, ça ne plante plus, par contre j'ai encore beaucoup de bizarreries..
Je vous explique ce que je fais..
en fait, j'écris une procédure "finaliser" qui, à la fermeture de mon form va se charger de fermer tous les objets query, connection ou stringlist non détruits...
voila le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
procedure finaliser;
var i: integer;
query: TADOQuery;
cox : TADOConnection;
lst : TStringList;
begin
//parcourrir la liste des query du dernier au premier item
if queryList <> nil then
for i := pred(queryList.Count) downTo 0 do
begin
query := queryList.Items[i];
//destruction de l'item courant s'il est est différent de nil
if assigned(query)
then query.Free;
queryList.Free;
end;
//parcourrir la liste des connections du dernier au premier item
if coxList <> nil then
for i := pred(coxList.Count) downTo 0 do
begin
cox := coxList.Items[i];
//destruction de l'item courant s'il est est différent de nil
if assigned(cox)
then cox.Free;
coxList.Free;
end else exit;
//parcourrir la liste des stringList du dernier au premier item
if lstList <> nil then
for i := 0 to lstList.Count -1 do
begin
lst := lstList.Items[i];
//destruction de l'item courant s'il est est différent de nil
if assigned(lst)
then lst.Free;
lstList.Free;
end else exit;
end; |
vous remarquerez que j'ai essayé : de 0 à count-1, ainsi que le contraire (avec Pred), mais ça plante dans les deux cas!
Mon problème est que j'ai toujours un "indice de liste hors limites"..
Pourtant, sur mon FormCreate j'écris:
1 2 3 4 5 6 7 8
|
lst1 := TStringList.Create;
lst2 := TStringList.Create;
queryList := TList.Create:
coxList := TList.Create;
lstList := TList.Create;
lstList.Add(lst1);
lstList.Add(lst2); |
puis lors du traitement, à chaque fois que j'ouvre une ADOConnection, je fais :
coxlist.Add(myAdoConnection);
à chaque fois que je crée une ADOQuery, je fais :
j'ouvre mon form.
Je fais quelques traitements histoire de bien alimenter mes listes, puis, quand je ferme mon form, j'ai toujours un "indice de liste hors limites"
voila...
Dans le souci d'etre propre, mon code plante
Partager