Déjà, il faudrait peut-être libérer Keylist après usage. Ensuite, instancier un TStringList en valeur retour, que tu dois sans doute oublier aussi de libérer, bof bof... On a déjà eu mainte discussion sur ce sujet, je n'ai pas changé d'avis : c'est laid, et dangereux. Personnellement, je préfère passer l'objet en paramètre d'une procédure, objet donc l'instanciation et la libération sont à la charge de la procédure appelante, dans le même bloc de code, par symétrie.
Ensuite, la clef codée en dur, bof bof aussi. As-tu bien vérifié que cette clef est la bonne sur TOUTES les versions de Windows et TOUTES les versions d'Outlook ? Sur mon PC, en tout cas, un petit tour dans RegEdit m'a convaincu que ça ne marcherait probablement pas.
Enfin, essaie de faire le parcours de la boucle en descendant, comme il a déjà été dit, sait-on jamais ? En principe c'est quand on élimine des éléments de la liste qu'il faut impérativement le faire, mais parfois Delphi a ses raisons que la raison ne connaît pas toujours (à cause des optimisations, sans doute) :
For i := KeyList.Count -1 downto 0 do
Partager