Récupérer l'extension d'un fichier [Résolu]

Signaler
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
-
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
-
Bonjour à tous,

j'aimerais récupérer l'extansion d'un fichier dans une chaine contenant pour l'exemple :
C:\Windows\notepad.exe

(récupérer donc dans cet exemple "exe" ou ".exe")

Mais je n'y arrive pas, avez-vous une idée ? comment faire ?

Merci d'avance à tous ..

8 réponses

Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
Salut,




Dim fichier As String = "C:\Windows\notepad.exe"
Dim extension As String
Dim indexPoint As Integer = fichier.LastIndexOf(".")

extension = fichier.Substring(index) + 1





<hr />

@+  
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
Tout à fait Renfield, j'ai juste mis le code pour récupérer l'extension. Mais c'est vrai que mon code va planter s'il n'y a aucun point dans la chaîne.

A rajouter donc :

If indexPoint <> -1 Then
   extension = fichier.Substring(index) + 1
Else
   MsgBox("blabla....")
End If

<hr />
@+  
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
2 solutions :
- On sait que l'extension est toujours du type ".xxx" soit 3 caractères.
On fait donc juste un Right(Chemin, 3) est hop, tu as ton extension.

- On n'en est pas sur justement de cette taille d'extension (il m'arrive de créer des extensions d'une taille supérieure quand je me fais des p'tits programmes donc, pourquoi pas) : C'est la même idée.
On cherche la position du dernier point dans le chemin avec la fonction InStrRev(Chemin, ".") qui donne la position du dernier caractère "point" de ton chemin.
Tu vas donc récupérer les caractères après ce point : la longueur à récupérer est len(chemin)-le chiffre remonté par InStrRev.
Et tu fais right(Chemin, chiffre).

Molenn
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Molenn, on est en .Net. Oublie donc InstrRev & Co.
De plus, ta première affirmation est fausse :
<strike>    On sait que l'extension est toujours du type ".xxx" soit 3 caractères.
    On fait donc juste un Right(Chemin, 3) est hop, tu as ton extension.</strike>

drahcir, il faut tester le fait qu'un point ait bien été trouvé, et mieux placer le '+1'...

    fichier.Substring(index) + 1

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
Heu Renfield, mon affirmation n'est pas fausse puisqu'on n'a pas assez de renseignements. Le sens que je donne à ce que j'ai écrit.
2 solutions :
- Hypothèse 1 : On sait que l'extension est toujours du type ".xxx" soit 3 caractères
=> Ca peut être le cas si allthew3 n'a besoin que de récupérer des extensions définies : par ex, il sait qu'il ne peut avoir que des fichiers .xls ou .doc dans un répertoire, pas besoin de chercher plus loin.
Fonction de ses besoins, on peut tout à fait partir là-dessus.
- Hypothèse 2 : blabla

Mais effectivement, je n'avais pas vu qu'on était dans la section vb.net et 2005 : les instructions que donnent drahcir ne fonctionnent pas en vba, ni en vb6 il me semble... Pour ça que je suis encore avec mon InStrRev et que je suis à côté de la plaque ^^

Molenn
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
1
lol ok
oui j'avais pas pensé au point ... et oui dans mon programme y'a forcément un point pour l'extansion ...

merci à tous ...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
drahcir, je te l'ai dit ca va pas le faire, ce +1

    extension = fichier.Substring(index) + 1

il ne doit pas être mis ici, mais bien comme suit :

    extension = fichier.Substring(index + 1)

^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
Arrf, j'avais pas vu ta 2ème remarque.... et comme j'ai pas testé, je suis passé à côté de cette boulette

<hr />
@+