Delphi - List Index out of bounds

Fermé
Foxtrot - 22 juin 2005 à 16:01
 feunten777 - 17 août 2009 à 10:42
Bonjour,

Je developpe une petite appli sous Delphi. Elle comporte entre autres un ShellListView et un FilterComboBox.

J'ai utilisé un code trouvé sur le net pour filtrer des extensions de fichiers grâce à ces 2 composants :

// Refresh the ShellListView when the filter changes
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
XFilterExt, XExt: string;
begin
if FilterComboBox1.Mask <> '*.*' then
begin
XFilterExt := ExtractFileExt(FilterComboBox1.Mask);
XExt := ExtractFileExt(AFolder.PathName);
// Only accept filter and folders
if (CompareText(XExt, XFilterExt) = 0) or AFolder.IsFolder then
CanAdd := True
else
CanAdd := False;
end;
end;

// Refresh the ShellListView when the filter changes
procedure TForm1.FilterComboBox1Change(Sender: TObject);
begin
ShellListView1.Refresh;
end;

Ce code fonctionne mais le problème est que quand la ShellListView est vide (quand je supprime le seul fichier qu'elle contient par exemple), j'ai un message d'erreur List Index out of bounds(0).
Comment puis-je corriger cette erreur? (le bound doit-il commencer à 0 au lieu de -1 par exemple ou quelquechose comme ça?)

Merci d'avance à tous et bonne journée !

2 réponses

Apparemment le message s'accompagne dans certains cas d'un 'Access Violation'.
2
bonjour!...
moi j'ai mis ca...

if Self.ShellListFichiers.Selected=nil then
et ce la permet de ne pas executer directement la suite si on clic sur une ligne vide.
1