Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Trucs & Astuces Classé sous : nom, window, verification Niveau : Débutant Date de création : 14/02/2006 Date de mise à jour : 14/02/2006 20:21:29 Vu : 4 583

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Bonjour,

Ce n’est pas vraiment un codes-source, mais surtout une astuce ! Si vous demander le nom du fichier a sauvegardé à l’utilisateur de votre programme celui-ci peut ne pas être correcte. C'est-à-dire qu’il peut contenir un code non valide pour les noms windows.

En fait cette astuce est simple et test simplement si un caractère non valide est dans la chaine.

 

Source

  • ' ****************************************************************************
  • ' ****************************************************************************
  • ' ****************************************************************************
  • ' ****************************************************************************
  • ' +--------------------------------------------------------------------------+
  • ' | DONNE LA VALIDITE DU NOM POUR LA SAUVEGARDE D'UN FICHIER METHODE N°1 |
  • ' +--------------------------------------------------------------------------+
  • Private Function GetIsValidName(ByVal strFileName As String) As Boolean
  • ' DECLARATION DES VARIABLES.
  • Dim lngI As Long
  • ' DONNE LA VALIDITE DU NOM.
  • lngI = lngI + InStr(&H1, strFileName, "\") ' CARACTERE '\'.
  • lngI = lngI + InStr(&H1, strFileName, "/") ' CARACTERE '/'.
  • lngI = lngI + InStr(&H1, strFileName, ":") ' CARACTERE ':'.
  • lngI = lngI + InStr(&H1, strFileName, "*") ' CARACTERE '*'.
  • lngI = lngI + InStr(&H1, strFileName, "?") ' CARACTERE '?'.
  • lngI = lngI + InStr(&H1, strFileName, "<") ' CARACTERE '<'.
  • lngI = lngI + InStr(&H1, strFileName, ">") ' CARACTERE '>'.
  • lngI = lngI + InStr(&H1, strFileName, "|") ' CARACTERE '|'.
  • lngI = lngI + InStr(&H1, strFileName, Chr$(&H22)) ' CARACTERE '"'.
  • If lngI = &H0 Then
  • GetIsValidName = True
  • Else
  • GetIsValidName = False
  • End If
  • End Function
  • ' +--------------------------------------------------------------------------+
  • ' | DONNE LA VALIDITE DU NOM POUR LA SAUVEGARDE D'UN FICHIER METHODE N°2 |
  • ' +--------------------------------------------------------------------------+
  • Private Function GetIsValidName(ByVal strFileName As String) As Boolean
  • ' DECLARATION DES VARIABLES.
  • Dim lngI As Long
  • Const strInterdit As String = "\/:*?""<>|"
  • ' RECHERCHE DES CARACTERES INTERDIT.
  • For lngI = 1 To Len(strInterdit)
  • If InStr(strFileName, Mid$(strInterdit, lngI, &H1)) Then
  • GetIsValidName = True
  • Exit For
  • End If
  • Next lngI
  • GetIsValidName = Not GetIsValidName
  • End Function
  • ' ****************************************************************************
  • ' ****************************************************************************
  • ' ****************************************************************************
  • ' ****************************************************************************
  • ' +--------------------------------------------------------------------------+
  • ' | EXEMPLE D'UTILISATION DE LA FONCTION "setIsValidName". |
  • ' +--------------------------------------------------------------------------+
  • If Not GetIsValidName("TestFile*.exe") Then
  • MsgBox ("NOM DU FICHIER INVALIDE")
  • End If
' ****************************************************************************
' ****************************************************************************
' ****************************************************************************
' ****************************************************************************

' +--------------------------------------------------------------------------+
' |   DONNE LA VALIDITE DU NOM POUR LA SAUVEGARDE D'UN FICHIER METHODE N°1   |
' +--------------------------------------------------------------------------+

Private Function GetIsValidName(ByVal strFileName As String) As Boolean
' DECLARATION DES VARIABLES.
    Dim lngI        As Long

' DONNE LA VALIDITE DU NOM.
    lngI = lngI + InStr(&H1, strFileName, "\")              ' CARACTERE '\'.
    lngI = lngI + InStr(&H1, strFileName, "/")              ' CARACTERE '/'.
    lngI = lngI + InStr(&H1, strFileName, ":")              ' CARACTERE ':'.
    lngI = lngI + InStr(&H1, strFileName, "*")              ' CARACTERE '*'.
    lngI = lngI + InStr(&H1, strFileName, "?")              ' CARACTERE '?'.
    lngI = lngI + InStr(&H1, strFileName, "<")              ' CARACTERE '<'.
    lngI = lngI + InStr(&H1, strFileName, ">")              ' CARACTERE '>'.
    lngI = lngI + InStr(&H1, strFileName, "|")              ' CARACTERE '|'.
    lngI = lngI + InStr(&H1, strFileName, Chr$(&H22))       ' CARACTERE '"'.
    If lngI = &H0 Then
        GetIsValidName = True
        Else
            GetIsValidName = False
    End If

End Function

' +--------------------------------------------------------------------------+
' |   DONNE LA VALIDITE DU NOM POUR LA SAUVEGARDE D'UN FICHIER METHODE N°2   |
' +--------------------------------------------------------------------------+

Private Function GetIsValidName(ByVal strFileName As String) As Boolean
' DECLARATION DES VARIABLES.
    Dim lngI            As Long
    Const strInterdit   As String = "\/:*?""<>|"

' RECHERCHE DES CARACTERES INTERDIT.
    For lngI = 1 To Len(strInterdit)
        If InStr(strFileName, Mid$(strInterdit, lngI, &H1)) Then
            GetIsValidName = True
            Exit For
        End If
    Next lngI
    GetIsValidName = Not GetIsValidName

End Function


' ****************************************************************************
' ****************************************************************************
' ****************************************************************************
' ****************************************************************************

' +--------------------------------------------------------------------------+
' |          EXEMPLE D'UTILISATION DE LA FONCTION "setIsValidName".          |
' +--------------------------------------------------------------------------+

If Not GetIsValidName("TestFile*.exe") Then
    MsgBox ("NOM DU FICHIER INVALIDE")
End If

Conclusion

Ceci n’est juste qu’une petite astuce, qui peut avoir son utilité en fonction de ce que vous faites.

Bonne programmation a tous,
[Gally Home Corp]

 

Historique

14 février 2006 19:49:38 :
Ajout d'une nouvelle méthode
14 février 2006 20:21:29 :
Correction d'erreur dans la mise a jour... Merci à PCPT d'avoir vu les erreurs...

Commentaires et avis

signaler à un administrateur
Commentaire de PCPT le 14/02/2006 15:54:14 administrateur CS

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]

signaler à un administrateur
Commentaire de PCPT le 14/02/2006 15:57:45 administrateur CS

si t'aimes pas les "IIf", tu peux remplacer par
GetIsValidName = (lngI = &H0)
(j'aime moins... question de goût ^^)

signaler à un administrateur
Commentaire de bouv le 14/02/2006 17:42:57

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

signaler à un administrateur
Commentaire de PCPT le 14/02/2006 18:06:35 administrateur CS

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 ;)
++

signaler à un administrateur
Commentaire de muad-dib le 14/02/2006 19:40:12

et pourquoi pas tout simplement IsValidName comme nom de fonction?......

signaler à un administrateur
Commentaire de Gally le 14/02/2006 19:47:13

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]

signaler à un administrateur
Commentaire de Gally le 14/02/2006 23:49:12

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]

signaler à un administrateur
Commentaire de vbPink le 09/08/2006 21:38:33

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

signaler à un administrateur
Commentaire de threadom le 16/10/2006 00:10:32

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

verification de controle [ par eddy ] mon projet de compose d'1 textbox et d'1 bouton valider.Je n'ai qu'une seule fonction: Valider_click().Lorsque l'utilisateur clique sur valider je lui Verification fichier excel [ par Fredmane ] SLT,Existe t'il un moyen de verifier la compatibilité d'un fichier excel, pour savoir avec quelle version d'excel (95,97,2000,XP,autres; MAC ou PC) il Creation de cades comme ds explorateur window [ par webboy ] Bonjour,Avec kel composant peut on creer des cadres comme explorateur window :A gauche il ya le treeview des dossiers & a droite la liste des fichiers Infos apparence Window XP [ par Capo ] Y' a t'il un moyen de récupérer dans un programme VB l'information sur le style des fenêtres utilisées sur window XP, en mode classique ou en mode XP. Utilisation des icones sytemes de Windows [ par FaciCAD ] Commen je peut faire pour utiliser les icones sytemes de Windows XP (ex.: Les icones dans l'explorateur de window, les icones des fichiers reconnu par Verification de nom [ par Tayelik ] BonjourJe voudrais savoir s'il était possible d'utiliser la fonction de vérification de nom d'Outlook dans un programme en VB et si oui quelle serait Qu'est ce qu'une class Window??? [ par emouchet ] J'ai pour instruction : "In the Class window, typeImplements, and then press the space bar."Mais je sais pas ce qu'ils entendent par Class Window.Merc Commande MS-Dos ?????? [ par pierre63 ] Bonjour,Voila je voudrais créer une applic qui s'éxécute sous window avec un bouton qui me permettrais de redemarrer en mode MS-dos et d'executer une maximise external window [ par babouche ] bonjour, jaimerais svoir coment faire pour maximiser la fenetre dune application deja lancée (par la fonctin shell toute betement)... car je voudrais verification base de registre lors du deploiement d'une appli [ par dardarmotus ] dardarmotus Je suis confronté encore une fois à un problème et je demande l'aide des pros de VB.Je veux verifier par un petit code VB :


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.