Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Control sur le chemin et nom de fichier

15 réponses
Avatar
SuperGolgoth
Bonjour,
j'ai un form (en VB6) dans lequel l'utilisateur doit donner le chemin
et le nom d'un fichier a créer
Mais je ne vois pas comment controler que la saisie est correcte
(eviter les caractères bizarres ou autre mauvaise manip)
Controler que le fichier est 'créable' si on peut dire
L'ideal serait d'inserer un control type explorer mais je ne le trouve
pas ...
Merci de votre aide

10 réponses

1 2
Avatar
LE TROLL
Bonjour :o)

C'est sans doute une question : "d'intelligence", comme ils disaient du
temps de feu l'Eempereur, davantage qu'une question de code prévu à cet
effet, enfin, je crois...

Déjà on peut en effet faire certains contrôles durant la saisie ou à la
validation.

Exemple :
- Qu'au début ça commence pas "U"
- Que le fichier est une longueur 2_à_8.3
- Que l'extension ne soit pas celle déjà normalisée pour un type de fichier
(voire à l'imposer)
- Qu'il n'y ait pas deux "" qui se suivent
- Que la profondeur ne dépasse par 6 niveau par exemple ""
- Que la longueur de la chaîne ne dépasse pas x caractères, et n'admettre
que (majuscules et minuscules), que de "a à z, espace, _".

En dernier, ou tout simplement, tu peux directement créer et supprimer
le fichier avec son chemin, et si jamais ce n'est pas conforme ça va
renvoyer un erreur, tu récupères, puis refuse la saisie...

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"SuperGolgoth" a écrit dans le message de news:

| Bonjour,
| j'ai un form (en VB6) dans lequel l'utilisateur doit donner le chemin
| et le nom d'un fichier a créer
| Mais je ne vois pas comment controler que la saisie est correcte
| (eviter les caractères bizarres ou autre mauvaise manip)
| Controler que le fichier est 'créable' si on peut dire
| L'ideal serait d'inserer un control type explorer mais je ne le trouve
| pas ...
| Merci de votre aide
|
|
Avatar
Jacques93
Bonjour SuperGolgoth,
SuperGolgoth a écrit :
Bonjour,
j'ai un form (en VB6) dans lequel l'utilisateur doit donner le chemin et
le nom d'un fichier a créer
Mais je ne vois pas comment controler que la saisie est correcte
(eviter les caractères bizarres ou autre mauvaise manip)
Controler que le fichier est 'créable' si on peut dire
L'ideal serait d'inserer un control type explorer mais je ne le trouve
pas ...
Merci de votre aide





Peut être ceci, en utilisant l'option 'Bouton : Nouveau dossier' :

<http://vbnet.mvps.org/index.html?code/browse/browseadv.htm&gt;

--

Cordialement,

Jacques.
Avatar
Jean-marc
SuperGolgoth wrote:
Bonjour,
j'ai un form (en VB6) dans lequel l'utilisateur doit donner le chemin
et le nom d'un fichier a créer
Mais je ne vois pas comment controler que la saisie est correcte
(eviter les caractères bizarres ou autre mauvaise manip)
Controler que le fichier est 'créable' si on peut dire
L'ideal serait d'inserer un control type explorer mais je ne le trouve
pas ...
Merci de votre aide



Hello,

dans un autre genre, tu peux utiliser une fonction qui va essayer
de créer le fichier, et qui te permettra de savoir si le fichier est
créable ou pas.
Ca utilise le fait qu'en cas de soucis, une erreur est déclenchée
que tu interceptes pour conclure.
Le preincipe est similaire à ce qu'on explique dans un article de
la FAQ : comment savoir si un fichier existe (méthode 2) :
http://faq.vb.free.fr/index.php?question" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr/index.php?question)

Bref, voici ta fonction :

Private Function isValidPath(ByVal filename As String) As Boolean
Dim f As Integer

On Error GoTo isValidPath_ERR

f = FreeFile
Open filename For Output As #f
Close #f
Kill (filename)
isValidPath = True

isValidPath_END:
Exit Function

isValidPath_ERR:
Resume isValidPath_END
End Function


Et pour l'utiliser:

Private Sub Command1_Click()
Dim path As String
Dim bRet As Boolean

path = "c:program filestoto"
bRet = isValidPath(path)
If bRet Then
MsgBox path & " can be created"
Else
MsgBox path & " can NOT be created"
End If

End Sub


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jean-marc
LE TROLL wrote:
Bonjour :o)
Déjà on peut en effet faire certains contrôles durant la saisie ou
à la validation.



<snip>

Et à cet effet, on peut judicieusement employer un
automate à états finis comme expliqué ici:
http://faq.vb.free.fr/index.php?question3" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr/index.php?question3

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour Jean-marc
Jean-marc a écrit :

Un peu légèrement me semble t-il :-)

[...]


Hello,

dans un autre genre, tu peux utiliser une fonction qui va essayer
de créer le fichier, et qui te permettra de savoir si le fichier est
créable ou pas.



Approche contestable, mais si c'est pour le fun ...

Ca utilise le fait qu'en cas de soucis, une erreur est déclenchée
que tu interceptes pour conclure.



Oui mais peut y'en avoir beaucoup d'erreurs dans ce cas de figure;
permanente ou temporaire, et pas toujours détectable de manière précise
en VB6 ...

Le preincipe est similaire à ce qu'on explique dans un article de
la FAQ : comment savoir si un fichier existe (méthode 2) :
http://faq.vb.free.fr/index.php?question)

Bref, voici ta fonction :

Private Function isValidPath(ByVal filename As String) As Boolean
Dim f As Integer

On Error GoTo isValidPath_ERR

f = FreeFile
Open filename For Output As #f



Et hop, même pas de Lock : on écrase allègrement !!!

Close #f
Kill (filename)
isValidPath = True

isValidPath_END:
Exit Function

isValidPath_ERR:
Resume isValidPath_END
End Function


Et pour l'utiliser:

Private Sub Command1_Click()
Dim path As String
Dim bRet As Boolean

path = "c:program filestoto"



Déjà là, c'est pas bien d'essayer d'écrire dans 'Program Files'. Y faut
pas, sauf à avoir les droits administrateur ...

bRet = isValidPath(path)
If bRet Then
MsgBox path & " can be created"
Else
MsgBox path & " can NOT be created"
End If

End Sub





Autre option, et petite pub ;-) , pour éviter les caractères interdits
dans certaines expressions, ou filtrer des noms : regexp, dont un site
spécifique vient d'être ouvert sur Code-Sources :

<http://regex.codes-sources.com/&gt;

Par exemple, pour une adresse e-mail :

<http://regex.codes-sources.com/codes/ADRESSE-MAIL_47935.aspx&gt;

ça doit pouvoir se faire sur les noms de répertoires / fichiers

Et pour les anciens, qui ont pratiqués sed, awk, et autres, sous U..x,
franchement, VB, c'est du chariaba :-D

PS : Vu l'ambiance sur certains forum actuellement, je tiens à préciser
que était un message ne comportant aucune agression envers qui que ce
soit :-)

--

Cordialement,

Jacques.
Avatar
Jean-marc
Jacques93 wrote:
Bonjour Jean-marc



Hello Jacques,

Jean-marc a écrit :

Un peu légèrement me semble t-il :-)



Carrément, en fait.


dans un autre genre, tu peux utiliser une fonction qui va essayer
de créer le fichier, et qui te permettra de savoir si le fichier est
créable ou pas.



Approche contestable, mais si c'est pour le fun ...



Ouais, carrément contestable. je me cache sous la table ...

Ca utilise le fait qu'en cas de soucis, une erreur est déclenchée
que tu interceptes pour conclure.



Oui mais peut y'en avoir beaucoup d'erreurs dans ce cas de figure;
permanente ou temporaire, et pas toujours détectable de manière
précise en VB6 ...



Je passe la suite :-((

Bref, un post à oublier qu'on mettra sur le compte de la fatigue (plus
de détails d'ici qq jours ...).

Sur ce, au lit !

Bonne soirée à tous !

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Jean-marc a écrit :
Jacques93 wrote:
Bonjour Jean-marc






[...]


Bref, un post à oublier qu'on mettra sur le compte de la fatigue (plus
de détails d'ici qq jours ...).



En souhaitant qu'il n'y ait rien de grave, à bientôt :-)

--

Cordialement,

Jacques.
Avatar
Gloops
[Enregistrer un fichier après avoir contrôlé le chemin d'accès]

Bonjour,

Tu parles d'un contrôle de type explorer, maintenant il reste à bien se
représenter ce que tu veux en faire.

Si c'est pour créer un fichier, la boîte de dialogue GetSaveFileName
devrait bien aider, la page indiquée par Jean-Marc donne des liens vers
des versions détaillées avec divers raffinements.

Au moins tu es assuré de créer le fichier dans un répertoire exista nt.
Après, il y a certes un travail intéressant à faire sur la gestion
d'erreurs.

Si Jacques ne veut pas de gestion d'erreurs probablement il préférera
sélectionner le répertoire avec BrowseForFolder, et utiliser les
fonctions qu'il indique pour contrôler les caractères du nom de fichi er
(après, j'imagine, une saisie par InputBox). J'ai l'impression que
j'aurais tendance à conseiller d'en venir là dans un deuxième temps ,
après s'être un peu frotté à GetSaveFileName. D'autant qu'ainsi q u'il le
souligne il ne faut pas omettre de vérifier les droits : là je sens
qu'on va ouvrir un sous-fil, la première idée qui me vient à l'espr it
est de me tourner vers FileSystemObject, mais je n'ai pas vérifié si
c'est une bonne idée. En tout état de cause je n'ai fait qu'évoquer
l'idée, il reste à "se taper le boulot" ;)


On peut aussi citer une autre page, qui offre moins de versions
différentes que vbnet mais qui de ce fait même peut avoir la préfé rence
de quelqu'un qui débute avec les API :

http://allapi.mentalis.org/apilist/GetSaveFileName.shtml

Cette fonction n'est pas forcément le meilleur exemple pour présenter ce
site, puisque l'exemple correspondant regroupe les démonstrations de
toutes les boîtes de dialogue "communes" Windows, donc, quatre sur cinq
sont hors sujet bien entendu.

Autrement il y a encore une autre page, qui ne présente pas cet
inconvénient du hors sujet, mais qui ne peut pas s'afficher sous Firefo x
(ça serait-y pas une bonne idée de se réveiller ? ;) )

http://mvps.org/accessfr/apis/api0001.htm

Pour l'utiliser sous VB6, au niveau de la propriété hwnd, il faut y
remplacer Application.hWndAccessApp par 0 (et c'est un nombre ;) ).

[HS]
Cet exemple a subi une évolution : avec les versions précédentes de
Windows on pouvait initialiser le chemin du fichier avec des espaces.
Avec Windows XP, il faut des caractères nuls. Raison pour laquelle on
complète avec String(256, 0) plutôt qu'initialiser avec Space(256) co mme
précédemment.


___________________________________________
SuperGolgoth a écrit, le 18/09/2008 09:32 :
Bonjour,
j'ai un form (en VB6) dans lequel l'utilisateur doit donner le chemin e t
le nom d'un fichier a créer
Mais je ne vois pas comment controler que la saisie est correcte
(eviter les caractères bizarres ou autre mauvaise manip)
Controler que le fichier est 'créable' si on peut dire
L'ideal serait d'inserer un control type explorer mais je ne le trouve
pas ...
Merci de votre aide




Avatar
Jean-marc
Jacques93 wrote:
Jean-marc a écrit :
Jacques93 wrote:
Bonjour Jean-marc






[...]


Bref, un post à oublier qu'on mettra sur le compte de la fatigue
(plus de détails d'ici qq jours ...).



En souhaitant qu'il n'y ait rien de grave, à bientôt :-)



rien de grave en effet (que du contraire) :o))))))

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Je ne suis pas assez intelligent pour faire ça moi :o)

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-marc" a écrit dans le message de news:
48d29fa0$0$2859$
| LE TROLL wrote:
| > Bonjour :o)
| > Déjà on peut en effet faire certains contrôles durant la saisie ou
| > à la validation.
|
| <snip>
|
| Et à cet effet, on peut judicieusement employer un
| automate à états finis comme expliqué ici:
| http://faq.vb.free.fr/index.php?question3" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr/index.php?question3
|
| Cordialement;
|
| --
| Jean-marc Noury (jean_marc_n2)
| Microsoft MVP - Visual Basic
| FAQ VB: http://faq.vb.free.fr/
| mailto: remove '_no_spam_' ;
|
|
|
|
1 2