Extraire le répertoire d'un fichier, son extension, son nom, sans fso mais par un algo

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 189 fois - Téléchargée 31 fois

Contenu du snippet

J'ai besoin de ceci pour trouver dans quel répertoire est installé un programme a travers la base de registres, qui me renvoyai le chemin du fichier uninstall, et comme j'ai besoin d'un autre fichier de se répertoire pour mes manips, j'ai eu besoin d'extraire le chemin du dossier.

Source / Exemple :


'Routine postée

Private Sub Command1_Click()
Text2.Text = ExtraireChemin(Text1.Text)
End Sub

Private Function ExtraireChemin(fichier As String)
Dim Chaine As String
Dim iPass As Single
iPass = 0
Do While Left$(Chaine, 1) <> "\"
Chaine = Right$(fichier, iPass)
iPass = iPass + 1
Loop
ExtraireChemin = Left$(fichier, Len(fichier) - Len(Chaine))
End Function

'---------------

'2eme Exemple : pouvant renvoyer chemin, fichier, et extension, pouvant servir d'alternative a FSO, gèrent les précisions telle que 2 extensions sur un fichier

Dim myPath As String
myPath = "c:\tests\waza.txt.waz"
n = InStrRev(myPath, "\")
myfile = Mid(myPath, n + 1)
MsgBox "Fichier : " & myfile
myFolder = Left(myPath, n - 1)
MsgBox "Dossier : " & myFolder
myExtension = Split(myPath, ".")
    If UBound(myExtension) = 0 Then
        MsgBox "Ce fichier n'a pas d'extension"
    ElseIf UBound(myExtension) > 0 Then
        MsgBox "Extension : " & myExtension(UBound(myExtension))
    End If

A voir également

Ajouter un commentaire

Commentaires

cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Pour la première routine, ne connaissant pas certaines instructions à ce moment, j'ai fait avec les moyens du bord ;) ET je découpe la chaine à chaque itération afin de trouver ou étai le "".

Pour la 2eme, InStrRev car il faut trouver le dernier "" dans la chaine pour extraire le nom du fichier, et ensuite Split car je veux séparer les morceaux de chaines séparés par des "." pour extraire l'extension, c'est la méthode qu'a proposé magic (les 2 méthodes en fait). Et comme je veux l'extension, c'est le dernier élément du tableau virtuel créé, sa permet de prendre en compte les fichiers ayant plusieurs extensions (ex : fichier.numero2.doc) et ainsi de prendre en comptes les extensions <> de 3 caractères (html, x, phtml ...)
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
Juste une remarque sur la première routine....

Je n'aime pas trop ta boucle While, mais j'aim encore moins que tu découpe a chaque iteration ta chaine.... c'est pas franchement économique, tout ca ;)
un Mid$ serait peut être plus adapté ?

En ce qui concerne la deuxieme routine, pourquoi utiliser tantot Split, tantot Instrrev ?
cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
Merci pour la précision, j'ai mis à jour le code ;)
cs_jp50
Messages postés
45
Date d'inscription
samedi 14 avril 2001
Statut
Membre
Dernière intervention
3 janvier 2008
-
Je viens d'apprendre la méthode InStrRev. Mais j'ai trouvé un problème pour l'extension. Tu suppose que l'extension est de trois lettres. Je travaille en direct 3D et plusieurs de mes fichiers sont en *.x alors ta fonction me donne "e.x" au lieu de juste x.

Tu pourrais faire quelque chose comme

Dim myPath As String
myPath = "c:\tests\waza.x"
myExtension = Split(myPath, ".")
MsgBox "Extension : " & myExtension(UBound(myExtension))

En passant j'ai mis la dernière occurence de myExtension car j'ai quelquefois des fichier du genre "Maison.arbre.x"

Jp50
cs_azerty25
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007
-
J'ai mis à jour le code, j'ai rajouté un 2eme exemple, n'utilisant pas de boucle. Il pourrai remplacer les fonctions FSO, car la 2eme méthode fait les memes actions.
thierrydelepine, interkira a raison, c'est bien ce que je disai aussi, les FSO nécessitent bien des fichiers supplémentaires par rapport à VB.
Vous avez vu que j'ai utilisé une boucle pour mon premier exemple, je ne connaissai pas InStrRev (mais déja vu sans savoir l'utilité), j'ai comme vous pouvez le voir fait avec les moyens du bord, cad ce que je connai. Connaitriez vous un site qui traite des fonctions de base telles que celle-ci ou encore des mots clés de VB de bases ? (style on, and, if etc etc) Je pense etre loin de tous les connaitre, d'ou cette demande ... ;)

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.