Findfirst [Résolu]

mathieu57100 104 Messages postés jeudi 24 juin 2004Date d'inscription 9 février 2006 Dernière intervention - 15 juin 2005 à 12:12 - Dernière réponse : mathieu57100 104 Messages postés jeudi 24 juin 2004Date d'inscription 9 février 2006 Dernière intervention
- 15 juin 2005 à 13:21
bonjour,
Dans un Ttreeview je voudrais charger la liste des répertoires contenus sur mon Bureau, mais seulement les répertoires...

procedure TfrmPrinc.Button1Click(Sender: TObject);
var
searchResult : TSearchRec;
pathBureau : string;
begin
//ajoute les sous-répertoires du Bureau
TreeView.Items.AddFirst(noeud, 'Bureau');
pathBureau := SpecialFolder(CSIDL_DESKTOP);
if FindFirst(pathBureau + '*', faDirectory, searchResult) = 0 then
begin
repeat
TreeView.Items.AddChild(TreeView.Items.GetFirstNode, searchResult.Name);
until FindNext(searchResult) <> 0;
FindClose(searchResult);
end;
end;

sauf que ca marche pas des masses...
d'ou peut venir mon problème?

merci d'avance.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
mathieu57100 104 Messages postés jeudi 24 juin 2004Date d'inscription 9 février 2006 Dernière intervention - 15 juin 2005 à 13:21
3
Merci
c'est bon finalement j'ai trouvé:
et j'ai rajouté aussi un test pour qu'il ne rajoute pas les répertoires '.' et '..'

procedure TfrmPrinc.Button1Click(Sender: TObject);
var
searchResult : TSearchRec;
pathBureau : string;
begin
//afiche les ss-dossiers du Bureau
TreeView.Items.AddFirst(noeud, 'Bureau');
pathBureau := SpecialFolder(CSIDL_DESKTOP);
if FindFirst(pathBureau + '\*.*' , faDirectory, searchResult) = 0 then
begin
if (searchResult.Attr and faDirectory) = faDirectory then
begin
while FindNext(searchResult) = 0 do
begin
if ((searchResult.Attr and faDirectory) = faDirectory) and (searchResult.Name <> '.') and (searchResult.Name <> '..') then
TreeView.Items.AddChild(TreeView.Items.GetFirstNode, searchResult.Name);
end;
FindClose(searchResult);
end;
end;
end;

Merci mathieu57100 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de mathieu57100
mathieu57100 104 Messages postés jeudi 24 juin 2004Date d'inscription 9 février 2006 Dernière intervention - 15 juin 2005 à 12:16
0
Merci
ah, oui, rien à voir mais ''SpecialFlder'' est une fonction qui retourne le chemin du répertoire précisé par la variable.

function SpecialFolder(Folder: Integer): String;
var
SFolder : pItemIDList;
SpecialPath : Array[0..MAX_PATH] Of Char;
begin
SHGetSpecialFolderLocation(frmPrinc.Handle, Folder, SFolder);
SHGetPathFromIDList(SFolder, SpecialPath);
Result := StrPas(SpecialPath);
end;
Commenter la réponse de mathieu57100
mathieu57100 104 Messages postés jeudi 24 juin 2004Date d'inscription 9 février 2006 Dernière intervention - 15 juin 2005 à 13:02
0
Merci
j'ai trouvé une erreur, mais ça ne marche toujours pas...
il faut tester l'attribut de searchResult

donc voila ce que j'ai maintenant:

procedure TfrmPrinc.Button1Click(Sender: TObject);
var
searchResult : TSearchRec;
pathBureau : string;
begin
//ajoute les sous-répertoires du Bureau
TreeView.Items.AddFirst(noeud, 'Bureau');
pathBureau := SpecialFolder(CSIDL_DESKTOP);
if FindFirst(pathBureau + '\*.*' , faDirectory, searchResult) = 0 then
begin
if (searchResult.Attr and faDirectory) = 0 then
begin
repeat
TreeView.Items.AddChild(TreeView.Items.GetFirstNode, searchResult.Name);
until FindNext(searchResult) <> 0;
FindClose(searchResult);
end;
end;
end;

dans ma treeview, il n'y a rien d'autre que ''Bureau'', comme si il n'y avait pas de sous dossiers à Bureau (si ma procedure fonctionnait...lol).
Commenter la réponse de mathieu57100

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.