Lister les fichiers d'un repertoire

Résolu
Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008 - 28 oct. 2006 à 20:21
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 28 oct. 2006 à 20:27
bonjour,


j'ai un petit problème avec le code suivant :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

function GetDirectory(const strPath: String): String;
var WFD: TWin32FindData; hFile: THandle; strFile, strDirectory: String;
begin
hFile := FindFirstFileA(PChar(strPath + '*'), WFD);
while FindNextFileA(hFile, WFD)doif(WFD.dwFileAttributesand16) = 16
then(if Copy(String(WFD.cFileName),1,1) <> '.'
then strDirectory := strDirectory + #2 + String(WFD.cFileName) + #1)
else strFile := strFile + String(WFD.cFileName) + #1;
Result := strDirectory + strFile;
end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetDirectory('D:\'));
end;
 

<!-- END TEMPLATE: bbcode_code -->

il est censé m'afficher tous les fichiers et dossiers contenus dans le repertoire D:\


le code marche, mais néanmois il y a un problème

en effet, il ne m'affiche pas le premier, par exemple si j'ai un
répertoire nommé "abc" et qu'il est le premier dans l'ordre
alphabétique, il n'apparaitra pas,

et si ensuite je créé un repertoire nommé "aaa" alors du coup le abc apparaitra mais pas le "aaa"


avez vous une idée de la manière dont je peux corriger ça ?


merci

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 oct. 2006 à 20:27
Methode crade: tu rajoute un traitemnet pour le 1er element:
(pense a indenter ton code, parce que la c'est horrible)

hFile := FindFirstFileA(PChar(strPath + '*'), WFD);
if(WFD.dwFileAttributesand16) = 16
then(if Copy(String(WFD.cFileName),1,1) <> '.'
then strDirectory := strDirectory + #2 + String(WFD.cFileName) + #1)
else strFile := strFile + String(WFD.cFileName) + #1;
Result := strDirectory + strFile;

while FindNextFileA(hFile, WFD)doif(WFD.dwFileAttributesand16) = 16
then(if Copy(String(WFD.cFileName),1,1) <> '.'
then strDirectory := strDirectory + #2 + String(WFD.cFileName) + #1)
else strFile := strFile + String(WFD.cFileName) + #1;
Result := strDirectory + strFile;
end;
3
Rejoignez-nous