Bonjour, j'ai un soucis avec une liste de pchar. Je les crées avec StrAlloc et les stocke dans une Tlist. le problème vient lorsque j'essaie de libérer les pointeurs avec strdispose. j'ai une exception de type EAccesViolation.

Quelqu'un pourrait me dire pourquoi .

voici le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Button1Click(Sender: TObject);
Var
  P: pchar;
begin
P := Stralloc( 6);
P := 'Hello';
fList.Add(P);
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
  Index : Integer;
  P : Pchar;
begin
while fList.Count > 0 do
  Begin
  P := fList.Extract(fList.Last); 
  strdispose(P); //<----  Problème
  end;
fList.Free;
end;
fList contient bien les pointeurs et ceux ci pointent bien sur les chaines de caractères.