Findfirst [Résolu]

Messages postés
104
Date d'inscription
jeudi 24 juin 2004
Dernière intervention
9 février 2006
- - Dernière réponse : mathieu57100
Messages postés
104
Date d'inscription
jeudi 24 juin 2004
Dernière intervention
9 février 2006
- 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
Messages postés
104
Date d'inscription
jeudi 24 juin 2004
Dernière intervention
9 février 2006
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de mathieu57100
Messages postés
104
Date d'inscription
jeudi 24 juin 2004
Dernière intervention
9 février 2006
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
Messages postés
104
Date d'inscription
jeudi 24 juin 2004
Dernière intervention
9 février 2006
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.