[oobasic] dirlist - fonction liste des fichiers / répertoires

Contenu du snippet

Pour OOBasic (CALC & co) j'ai souvent manqué de fonctions simples et indispensables alors je me les suis créées.

Celle ci liste un répertoire pour trouver les fichier et/ou sous-répertoires.
PARAMETRES :
- rep (String) = répertoire à lire
- filter (String) optionnel, un filtre. "" par défaut
- attr (Integer) optionnel, attribut du fichier. 0 par défaut, 16 pour lister les répertoires
SORTIE :
- array(String) (donc un variant)

Source / Exemple :


REM liste les fichiers d'un répertoire
REM attr = 16 pour lister les sous-répertoires
Function DirList(rep as string, optional filter as string, optional attr as integer) as variant
	Dim sValue as string
	Dim count as long, i as long

	On Error Goto ErrHandler
	If IsMissing(attr) Then attr = 0
	
	If IsMissing(filter) Then ' compter le nb de fichiers
		count = DirListCount(rep, "", attr)
	Else
		count = DirListCount(rep, filter, attr)
	End If

	Dim ret(count) as string ' déclaration du tableau

	If IsMissing(filter) Then
		sValue = Dir$(rep, attr)
	Else
		sValue = Dir$(rep & filter, attr)
	End If

	Do
		If sValue <> "." and sValue <> ".." Then
				ret(i) = sValue
				i = i + 1
		End If
		sValue = Dir$
	Loop Until sValue = ""

	DirList = ret
Exit Function
ErrHandler:
	Msgbox "Erreur " & err & " (L." & erl & ") : " & error(err) & chr(13) & sValue & " (" & count & ")"
End Function

REM Compter les fichiers dans un répertoire
REM attr = 16 pour lister les sous-répertoires
Function DirListCount(rep as string, optional filter as string, optional attr as integer) as long
	Dim sValue as string
	Dim count as long

	On Error Goto ErrHandler
	If IsMissing(attr) Then attr = 0
	
	If IsMissing(filter) Then
		sValue = Dir$(rep, attr)
	Else
		sValue = Dir$(rep & filter, attr)
	End If
	Do
		If sValue <> "." and sValue <> ".." Then
			'If GetAttr( rep & sValue) <> attr Then 
			count = count + 1
		End If
		sValue = Dir$
	Loop Until sValue = ""
	DirListCount = count-1
Exit Function
ErrHandler:
	Msgbox "Erreur " & err & " (L." & erl & ") : " & error(err) & chr(13) & sValue & " (" & count & ")"
End Function

Conclusion :


EXEMPLE :
resultat = DirList("c:\temp", "*.csv")

resultat = DirList("c:\temp", "", 16)

...

une 2e fonction compte le nombre de résultats : fonction DirListCount() avec les mêmes paramètres.

A voir également

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.