SAVOIR SI LE NOM D'UN FICHIER EST VALIDE (NOM WINDOWS)

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 14 févr. 2006 à 15:54
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007 - 16 oct. 2006 à 00:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36051-savoir-si-le-nom-d-un-fichier-est-valide-nom-windows

threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
16 oct. 2006 à 00:10
Petit Mix final, j'ai repris PCPT, BOUV, et MUAD-DIB, vbPink pour obtenir :

Ca répond a peu près a tout les critères de tout le monde je crois et c'est a mon avis le plus rapide tout en respectant les valeurs et tailles de VB6.

Public Function IsValidName(ByVal strFileName As String) As Boolean
Const sInterdit As String = "\/:*?""<>|"
Dim i As Integer

IsValidName = True
For i = 1 To Len(sInterdit)
If (InStr(strFileName, Mid$(sInterdit, i, 1)) <> 0) Then IsValidName = False: Exit Function
Next i
End Function
vbPink Messages postés 23 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 30 août 2006
9 août 2006 à 21:38
Je suis d'accord pour la diversité des astuces, mais pourquoi faire compliqué quand on peut faire simple ?
Ta fonction est très longue, on peut résumer en beaucoup moins de lignes pour une efficaté accrue.

Exemple :

Public Function IsValidName(ByVal sFile As String) As Boolean
Dim i As Byte
Dim sChar As String
sChar = "\/*?:<>|" & Chr(34)

For i = 1 To Len(sFile)
If InStr(1, sChar, Mid$(sFile, i, 1)) > 0 Then
IsValidName = False
Exit Function
End If
Next i

IsValidName = True
End Function
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
14 févr. 2006 à 23:49
Bonjour,

Merci au divers personne qui ont rebondit a cette petite astuce, car maintenant je penses qu'elle est vraiment pas trop mal.

Bonnne programmation a tous,
[Gally Home Corp]
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
14 févr. 2006 à 19:47
Bonjour,

Pas de problème pour vos méthodes, l'avantage c'est qu'avec ce ke j'ai posté il y a maintenant plusieurs méthode.

Cela dit, il n'est pas obligatoire de me soutenir "PCPT". Je ne fait cela que pour donné un petit coup de main au personne de ce site. Mais merci quand même ;-)

Et comme veux que ce soit le mieu possible je vais ajouté la 2eme méthode.

Bonnne programmation
[Gally Home Corp]
cs_muad-dib Messages postés 103 Date d'inscription lundi 9 avril 2001 Statut Membre Dernière intervention 16 juillet 2008
14 févr. 2006 à 19:40
et pourquoi pas tout simplement IsValidName comme nom de fonction?......
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 févr. 2006 à 18:06
salut Bouv,
exact est d'accord avec toi. j'ai voulu aller trop vite ^^
(faut vraiment que j'apprenne à me relire.....)

pour le retour néanmoins, mais plus par habitude d'initialiser, pas tout à fait ok. donc une ligne de plus en entête avec GetIsValidName=False.
on peut aussi terminer juste avec GetIsValidName=True, en remplaçant Exit For par Exit Function.

des manières, il y en a souvent plusieurs, faut tout de même soutenir Gally ;)
++
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
14 févr. 2006 à 17:42
Salut, petite erreur dans le code de PCPT
Remplacer For i = 1 To Len(i)
par For i = 1 To Len(sInterdit)

Cela dit je prefere :

Private Function GetIsValidName(ByVal strFileName As String) As Boolean
Const sInterdit As String = "\/:*?""<>|"
Dim i As Integer
For i = 1 To Len(sInterdit)
If InStr(strFileName, Mid$(sInterdit, i, 1)) Then GetIsValidName = True: Exit For
Next i
GetIsValidName = Not GetIsValidName
End Function
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 févr. 2006 à 15:57
si t'aimes pas les "IIf", tu peux remplacer par
GetIsValidName (lngI &H0)
(j'aime moins... question de goût ^^)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 févr. 2006 à 15:54
salut,
ouai çà peut être pratique, sachant aussi que çà se simplifie pas mal. et pour le nom, peut-être plus GET que SET, non?



Private Function GetIsValidName(ByVal strFileName As String) As Boolean
Const sInterdit As String = "\/:*?""<>|"
Dim lngI As Long, i As Integer: lngI = 0
'
For i = 1 To Len(i)
lngI = lngI + InStr(1, strFileName, Mid$(sInterdit, i, 1))
Next i
'
GetIsValidName IIf(lngI &H0, True, False)
End Function


tu peux ensuite également ajouter la vérif d'une extension, etc... ;)

++
PCPT [AFCK]
Rejoignez-nous