IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ouvrir Explorer avec un String contenant des virgules / peut "With" accelerer mon programme? [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2002
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 198
    Par défaut Ouvrir Explorer avec un String contenant des virgules / peut "With" accelerer mon programme?
    Bonjour,
    J'ai écris ce tout petit programme pour retrouver un numéro de projet dans notre structure.
    - Si le chemin possède des virgules ça ne marche pas. Je cherche..
    - Est-ce qu'avec des with... je peux faire accélérer mon programme?
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim oProjNr As String = TextBox1.Text
     
            Dim oList1 As New Collection
            oList1.Add(My.Computer.FileSystem.GetDirectories(path))
     
            Dim oList2 As New Collection
            Dim oList3 As New Collection
     
            Dim oString1 As String
            Dim oString2 As String
            Dim oString3 As String
            Dim oString4 As String
     
            For Each oString1 In oList1.Item(1)
                oList2.Add(My.Computer.FileSystem.GetDirectories(oString1))
     
                For Each oString2 In oList2.Item(1)
                    Dim testString As String = oString2 & "\" & oProjNr
                    oList3.Add(My.Computer.FileSystem.GetDirectories(oString2))
     
                    For Each oString3 In oList3.Item(1)
                        If oString3.Length > testString.Length Then
                            oString4 = oString3.Remove(testString.Length)
                            If testString = oString4 Then
                                If My.Computer.FileSystem.DirectoryExists(oString3) Then
                                    Process.Start("explorer.exe", oString3)
                                    Exit Sub
                                End If
                            End If
                        End If
                        'Debug.Print(oString3)
                    Next
                    oList3.Clear()
                Next
                oList2.Clear()
            Next
     
        End Sub

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut Usage de With
    Je n'ai pas de solution pour les virgules (pas pour l'instant :-), mais je peux parler de With.

    L’instruction With suivie d’un nom de variable d’un type structuré permet d’accéder aux données sans devoir répéter le nom de la variable à chaque fois.
    Elle n'est qu'une économie de dactylographie pour le programmeur.
    Elle a toutefois le mérite de rendre le code plus lisible (si on utilise bien l'indentation).
    Elle ne change absolument rien aux performances du programme.

    Les 4 lignes de codes suivantes …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NomVarStruct.Nbre = 0
    NomVarStruct.Tab(1) = 11	
    NomVarStruct.Tab(2) = 12	
    NomVarStruct.Tab(3) = 13
    … peuvent s’écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With NomVarStruct
         .Nbre = 0	
         .Tab(1) = 11
         .Tab(2) = 12
         .Tab(3) = 13
    End With

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2002
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 198
    Par défaut
    Bonjour,
    J'ai vu dans l'aide comment utiliser "with" avec des propriétés mais pas avec des fonctions.
    Mon programme marche bien. J’étudierai plus tard "with" pour voir si ça peut être utilisé avec des fonctions.
    (un peu comme vl-some dans autolisp)
    with collection1
    ..with collection 2..

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut A propos des virgules
    Un nom de dossier aussi débile que C'est fou, ce qu'on peut faire peut fonctionner en ligne de commande lorsqu'il est encadré de guillemets.
    Je te propose donc d'essayer de transformer tes chemins d'accès tel que mon exemple en "C'est fou, ce qu'on peut faire".
    C'est valable aussi s'il y a des accentués dans la chaîne et aussi, bien sûr, pour toute chaîne qui ne contiendrait que les caractères ordinaires, sans ponctuation ni accentuation.
    J'espère que ça t'aidera ...

  5. #5
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Avec des noms de variables tels que oList ou oString ça aide pas à savoir qui sert à quoi concrètement ; pire ça n'apporte absolument aucune info utile. Choisir des noms de variables clairs indiquant leur rôle plutôt que leur type serait plus judicieux.
    Sinon j'ai pas bien tout pigé concernant l'histoire des virgules, et le code tel quel n'aide pas à y voir plus clair ; cela étant dit, quand il s'agit de manipuler des chemins de dossier/fichier jeter un oeil aux classes Path, Directory/File et DirectoryInfo/FileInfo pourrait se révéler intéressant.

    Une petit parenthèses concernant With ; perso je l'évite; simplement parce que ça fait pas gagner grand chose, ça ajoute un niveau d'indentation pour rien, et si l'on se trouve dans une méthode simple et claire (et courte donc) pas vraiment besoin de With, ça ne rajoute que du bruit et si au contraire on se retrouve dans un gros pavé (chose déjà problématique en soi) s'il faut remonter 50 lignes pour savoir à qui est ce .Truc qui se balade (et pire encore si l'on commence à imbriquer les With).
    Et je suppute même qu'il puisse y avoir des cas (non triviaux certes) où ça peut poser d'autres problèmes, j'ai pas testé mais le premier qui me viendrait serait le cas où l'objet "With-é" serait une structure (mutable ) plutôt qu'une classe

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2002
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 198
    Par défaut
    @Phil, Merci. C'est aussi ce que je fais avec met x.cmd. Je pensais qu'il existait un "settings" permettant de lire les virgules comme texte.

    @Sehnsucht. Je n'ai pas cherché à définir mes variables avec des noms plus perspicaces car tout le programme se résume à ce que j'ai posté. (Je ne connais pas les structures mutables.)
    Comment nommerais-tu ces variables?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2014, 18h01
  2. Réponses: 3
    Dernier message: 18/09/2006, 20h55
  3. Problème avec un switch contenant des strings
    Par dessinateurttuyen dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h56
  4. Problème avec une TImageList contenant des grandes images
    Par Manopower dans le forum Composants VCL
    Réponses: 8
    Dernier message: 17/11/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo