[Delphi] EAccessViolation sur TStringList [Résolut]

EAccessViolation sur TStringList [Résolut] [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 24-06-2015 à 21:49:52    

Salut les gens
 
j'ai un problème EAccessViolation quand j'utilise un stringlist sur ce code:
 

Code :
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. var
  3.   i:Integer;
  4.   SelectedDir:string;
  5.   Chemin:string;
  6.   Info   : TSearchRec;
  7. begin
  8.   LstFichier := TStringList.Create;
  9.          
  10.   if SelectDirectory('Select a directory',  'Desktop', SelectedDir) then
  11.   begin
  12.     SLDir:=TStringList.Create;
  13.     RecurseSubFolder(SelectedDir);
  14.          
  15.     for i:= 0 to (sldir.count)-1 do
  16.     begin
  17.       LstFichier.Clear;
  18.       Chemin := IncludeTrailingPathDelimiter(SLDir.Strings[i]);
  19.       If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then
  20.       Begin
  21.         Repeat
  22.           If ((Info.Attr And faDirectory)=0) then LstFichier.Add('Dossier '+inttostr(i)+' '+Chemin+Info.FindData.cFileName);
  23.         Until FindNext(Info)<>0;
  24.         FindClose(Info);
  25.       End;
  26.    
  27.       LstFichier.Free;
  28.     end;   
  29.     SLDir.Free;
  30.     ShowMessage('Fini');
  31.   end;
  32. end;


 
 
RecurseSubFolder ça vient du code qu'a posté Gilbert Geyer sur cette page à 16h52 http://www.developpez.net/forums/d [...] er-disque/
 
j'ai juste viré les uppercase
 
si je met un memo.lines.add à la place du LstFichier.Add et que je met en commentaire tout ce qui a trait au stringlist tout marche bien mais je ne peut pas utiliser le stringlist LstFichier
 
mon stringlist est bien initialisé...
 
quelqu'un a une chtite idée?


Message édité par Flagad'aware le 25-06-2015 à 20:47:14
Reply

Marsh Posté le 24-06-2015 à 21:49:52   

Reply

Marsh Posté le 25-06-2015 à 20:52:13    

yeurf c'est bon j'ai trouvé en utilisant le pas à pas (pour la première fois...)
 
il fallait déplacer le LstFichier := TStringList.Create; au début de la boucle for i:= 0 to (sldir.count)-1...
 
j'ai pas fait attention qu'il fallait re-créer le stringlist après le free...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed