Voici un code auprès duquel je m’arrache les cheveux depuis des heures ! Alors j’ai décidé de vous le soumettre.
Il liste les “drives” dispo et filtre les sauvegardes TimeMachine (.backup) pour les afficher dans un Listbox.
Il fonctionnait bien jusqu’à ce que j’ajoute la ligne “If filename.indexOf(”.backup") > -1 then" qui filtre les lecteurs. Une exception OutofBound apparaît alors systématiquement. J’ai effectué de nombreux tests de contournement mais je n’arrive pas à entrevoir la solution (probablement toute bête…)
Var file As FolderItem
Var filename As String
For i As Integer =0 To VolumeCount-1
file = Volume(i)
filename = file.Name
If filename.indexOf(".backup") > -1 then //<--- Génère un OutOfBound exception !
Listbox1.AddRows(filename) //file.Name
Listbox1.RowTagAt(i) = file.ShellPath
End
Next
Ca marche toujours pas.
IndexOf renvoie logiquement -1
Var file As FolderItem
file = Volume(i)
filename = file.Name
if file <> nil then
//Filtrer les volumes:
if filename.IndexOf(".backup") > -1 then
Listbox1.AddRows(filename) //file.Name
Listbox1.RowTagAt(i) = file.ShellPath
else
//msgbox(filename.IndexOf(".backup").ToString) //renvoie -1
end
end
Je te remerci pour ton aide. J’ai intégré tes remarques mais cela ne change malheureusement rien.
Si j’enlève le filename.IndexOf(".backup") comme le filename.Right(7), j’affiche bien TOUS LES VOLUMES dont les .backup qui m’intéressent (voir capture).
Sinon j’ai un OutOfBound Exception qui vient, je pense, de la différence entre Listbox.AddRows(filename) et le RowTagAt(i) qui lui est incrémenté, contrairement au premier. Je pense que c’est la liaison entre les éléments du listbox et le RowTagAt(i) dans la boucle qui provoque un dépassement de borne.
Le problème vient bien de cette ligne (tout fonctionne lorsque je la met en //)
ListBox1.RowTagAt(i) = file.DriveAt(i).NativePath
(probablement des 2 variables “i”)
Si ca saute aux yeux de quelqu’un…
Merci.
i est un index défini à l’extérieur du code présenté. Entre les deux lignes illustrées, il faudrait récupérer l’index de la dernière entrée créée par AddRows car il sera différent de i, et l’utiliser pour régler le RowTagAt()
@Jean_Luc_Pellerin, merci pour l’astuce. Mais pour la colonne 2 par exemple ? (Idem ?)
J’utilise ListBox1.AddRow ( “col 0”, "col1, “col2”, etc. ) et ca fonctionne bien.
Quelle est la différence ?