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 :

Question d'imbriquation subrogative [Débutant]


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Question d'imbriquation subrogative
    Bonjour,

    J'ai en effet un problème avec l'imbrication de mes boucles. J'essaie donc de créer un programme qui recherche quel élément parmi les exécutables de même nom est le plus récent, et de l'installer.. Alors attention, comme on me l'a fait remarquer, ça pique les yeux (âmes sensibles s'abstenir )

    Le problème intervient au niveau de l'imbrication des deux boucle: Ce qui m'intéresse c'est que le while récupère la valeur du j qui s'incrémente, or quand on rentre dans le while, je perds totalement sa valeur (Le print m'affiche 0 , alors que la boucle for en est à j =1,2,3,4,5,6... enfin vous aurez compris). Du coup ma boucle while refait sans arrêt la même chose, 360 fois (c'est la valeur de mon i ).

    Donc si vous avez des solutions à me proposer j'en serait ravie et surtout reconnaissante sachant que ça fait 1 jour que je galère ! Donc Merci d'avance

    PS: Pour ceux qui auraient le temps ou l'envie de me montrer à quoi ressemblerait un programme différent qui fait la même chose ( fait par un pro quoi ) J'en serais ravie.

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    Imports System.IO
    Public Class Form1
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
     
     
            Dim i As Integer = 0
     
            For Each file As String In Directory.GetFiles("P:\CTRL_Projets\DTM_Repository", "*.exe", System.IO.SearchOption.AllDirectories)
     
     
                Dim lStr As String = file
                Dim lDossierNom As String = IO.Path.GetFileName(IO.Path.GetDirectoryName(lStr))
                Dim startIndex As Integer = 30
                Dim length As Integer = 20
                Dim substring As String = file.Substring(startIndex, length)
                Dim LaDate As Date = IO.File.GetLastWriteTime(file)
     
                i = i + 1
     
                ListBox2.Items.Add(LaDate)
                ListBox1.Items.Add(substring)
     
                ListBox5.Items.Add(lDossierNom)
                ListBox6.Items.Add(file)
     
     
     
            Next
     
     
     
     
            Dim nosame As String
            Dim k As Integer = 0
            Dim m As Integer = 0
            Dim j As Integer = m
            Dim nomentier As String = 0
            Dim value As String = ListBox1.Items.Item(j)
            Dim time As Date = ListBox2.Items.Item(j)
     
     
     
     
            For m = 0 To i
     
     
                While k < i
                    ListBox7.Items.Add(j)
     
     
     
                    Dim t1 As Date = ListBox2.Items.Item(j)
                    Dim t2 As Date = ListBox2.Items.Item(k)
                    Dim s1 As String = ListBox1.Items.Item(j)
                    Dim s2 As String = ListBox1.Items.Item(k)
                    Dim n1 As String = ListBox6.Items.Item(j)
                    Dim n2 As String = ListBox6.Items.Item(k)
     
                    s1 = value
                    t1 = time
                    n1 = nomentier
                    ListBox3.Items.Add(nomentier)
                    ListBox3.Items.Add(time)
     
     
                    If String.Compare(s1, s2) = 0 Then
                        'Compare le premier substring au deuxième
     
                        If DateTime.Compare(t1, t2) < 0 Then
                            value = s2
                            nomentier = n2
                            time = t2
                            'Si t2 est plus jeune, il remplace la valeur du premier substring par le deuxième pour le comparer à son tour'
     
                        ElseIf DateTime.Compare(t1, t2) > 0 Then
                            value = s1
                            nomentier = n1
                            time = t1
                            't1 est plus jeune, donc on garde le même substring et on implémente k pour trouver un autre fichier plus jeune '
                        Else
                            value = s1
                            nomentier = n1
                            time = t1
     
                        End If
     
                    ElseIf String.Compare(s1, s2) <> 0 Then
                        nosame = 0
                        value = s1
                        time = t1
                        nomentier = n1
     
                    End If
                    k = k + 1
                    s1 = value
                    t1 = time
                    n1 = nomentier
     
     
     
     
                End While
     
     
                ListBox4.Items.Add(nomentier)
     
     
            Next
     
     
     
     
     
     
     
        End Sub
    End Class

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    C'est bon cette fois j'ai mis mes lunettes

    J'ai pas regardé de près mais déjà je peux te dire que ton j n'est jamais modifié, donc il reste à 0.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par J@ckHerror Voir le message
    Bonjour,

    C'est bon cette fois j'ai mis mes lunettes

    J'ai pas regardé de près mais déjà je peux te dire que ton j n'est jamais modifié, donc il reste à 0.

    J@ck.

    My Bad j'ai pas envoyé la bonne version , en fait le m de la boucle c'est un j , enfin je l'avait changé pour voir si c'était pas ça qui bloquait , mais enfait non ..

    Je remet donc le programme sans l'erreur , mais ca marche toujours pas, le j reste toujours à 0

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    Imports System.IO
    Imports System
    Imports System.Drawing
    Public Class Form1
     
        Private Sub CheckedListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
     
     
        End Sub
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
     
            Dim chemin As String
            chemin = FolderBrowserDialog1.SelectedPath
     
            ListBox3.Items.Add(chemin)
     
     
     
            Dim i As Integer = 0
     
            For Each file As String In Directory.GetFiles("P:\CTRL_Projets\DTM_Repository", "*.exe", System.IO.SearchOption.AllDirectories)
     
     
                Dim lStr As String = file
                Dim lDossierNom As String = IO.Path.GetFileName(IO.Path.GetDirectoryName(lStr))
                Dim startIndex As Integer = 30
                Dim length As Integer = 20
                Dim substring As String = file.Substring(startIndex, length)
                Dim LaDate As Date = IO.File.GetLastWriteTime(file)
     
                i = i + 1
     
                ListBox2.Items.Add(LaDate)
                ListBox2.Visible = False
                ListBox1.Items.Add(substring)
                ListBox1.Visible = False
                ListBox5.Items.Add(lDossierNom)
                ListBox5.Visible = False
                ListBox6.Items.Add(file)
                ListBox6.Visible = False
                ListBox3.Visible = True
     
     
     
            Next
     
     
     
     
            Dim nosame As String
            Dim k As Integer = 0
            Dim m As Integer = 0
            Dim j As Integer = m
            Dim nomentier As String = 0
            Dim value As String = ListBox1.Items.Item(j)
            Dim time As Date = ListBox2.Items.Item(j)
     
     
     
     
            While j < i
     
             k=0
                While k < i
     
                    ListBox7.Items.Add(j)
     
     
     
     
     
                    Dim t1 As Date = ListBox2.Items.Item(j)
                    Dim t2 As Date = ListBox2.Items.Item(k)
                    Dim s1 As String = ListBox1.Items.Item(j)
                    Dim s2 As String = ListBox1.Items.Item(k)
                    Dim n1 As String = ListBox6.Items.Item(j)
                    Dim n2 As String = ListBox6.Items.Item(k)
     
                    s1 = value
                    t1 = time
                    n1 = nomentier
     
     
     
                    If String.Compare(s1, s2) = 0 Then
                        'Compare le premier substring au deuxième
     
                        If DateTime.Compare(t1, t2) < 0 Then
                            value = s2
                            nomentier = n2
                            time = t2
                            'Si t2 est plus jeune, il remplace la valeur du premier substring par le deuxième pour le comparer à son tour'
     
                        ElseIf DateTime.Compare(t1, t2) > 0 Then
                            value = s1
                            nomentier = n1
                            time = t1
                            't1 est plus jeune, donc on garde le même substring et on implémente k pour trouver un autre fichier plus jeune '
                        Else
                            value = s1
                            nomentier = n1
                            time = t1
     
                        End If
     
                    ElseIf String.Compare(s1, s2) <> 0 Then
                        nosame = 0
                        value = s1
                        time = t1
                        nomentier = n1
     
                    End If
                    k = k + 1
                    s1 = value
                    t1 = time
                    n1 = nomentier
     
     
     
     
                End While
     
     
               j=j+1
     
               CheckedListBox1.Items.Add(nomentier)
     
     
            End While
     
     
     
     
     
     
        End Sub
     
     
     
    End Class

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    En fait j'ai l'impression que le premier while contourne le deuxième, c'est à dire qu'il l’exécute mais sans pour autant rentrer dedans et modifier quoi que ce soit..

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Cette fois je vais être plus précis. Tu ne modifie jamais j à l'intérieur de la boucle ... donc il n'est jamais modifié pendant les itérations de ta boucle ... Ton programme fait donc exactement ce que tu lui dit de faire , si tu ne modifie pas la variable à l'intérieur de la boucle ...

    Sinon tu parlais d'un exemple de programme un peu plus pro. Déjà ce que je peux te conseiller c'est de donner de vrai nom a tes variables, surtout quand dans une fonction tu commence à cumule les i,j,z,t ... par exemple des indexCurrent, indexMax, ou dateCurrent et dateCible seront bien plus parlant que i1 i2 d1 d2... et ne me dit pas que c'est plus rapide a écrire stp

    De plus tu pourrais créer des classes et ainsi vraiment faire de la poo...

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par J@ckHerror Voir le message
    Cette fois je vais être plus précis. Tu ne modifie jamais j à l'intérieur de la boucle ... donc il n'est jamais modifié pendant les itérations de ta boucle ... Ton programme fait donc exactement ce que tu lui dit de faire , si tu ne modifie pas la variable à l'intérieur de la boucle ...

    Sinon tu parlais d'un exemple de programme un peu plus pro. Déjà ce que je peux te conseiller c'est de donner de vrai nom a tes variables, surtout quand dans une fonction tu commence à cumule les i,j,z,t ... par exemple des indexCurrent, indexMax, ou dateCurrent et dateCible seront bien plus parlant que i1 i2 d1 d2... et ne me dit pas que c'est plus rapide a écrire stp

    De plus tu pourrais créer des classes et ainsi vraiment faire de la poo...

    J@ck.
    Pour les variables, c'est noté je vais modifier leur nom

    Pour la variable, je ne sait pas comment lui dire de la modifier à l'interieur de la boucle, parce que je veux qu'il fasse d'abord un tour complet de k=0 à i, et seulement après modifier la valeur de j, c'est la raison pour laquelle j'ai mis une boucle à l’extérieur.

    Des classe ? OULALA je crois qu'on va y aller mollo

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Hello,
    Tu poses la même question sur deux forums. C'est pas bien, faut pas le faire . Je t'ai répondu là : Windows Forms

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Hello,
    Tu poses la même question sur deux forums. C'est pas bien, faut pas le faire . Je t'ai répondu là : Windows Forms

    Oui en effet c'est le même programme mais pas du tout la même question, d'ailleurs j'avais pas vu ta réponse sur l'autre post

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Oui sauf que tu ne fais pas ce que tu dis (par contre j'ai pas analysé si ce que tu dis produira ce que tu attends, désolé pas trop le temps mais j'ai comme un doute )

    je veux qu'il fasse d'abord un tour complet de k=0 à i, et seulement après modifier la valeur de i
    Donc pourquoi ne le fais tu pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    While j < i
     
                K = 0
                While k < i
                ...
                    k = k + 1
                ...
                End While
    
    j = j + 1
    
    
    End While
    Voila en gras c'est pour coller parfaitement a ce que tu dis.
    Maintenant je ne peux que te conseiller d'utiliser des boucles for. Elles seront peut être plus parlantes pour toi. Tous ce qu'un for fait un while peu le faire et inversement. mais pour le for tu ne t'embetera pas avec la variables d'itération au milieu de tes autres instructions, bref va jeter un oeil !


    Sinon juste une petite correction de langage, moi quand je lis ça
    c'est la raison pour laquelle j'ai mis une boucle à l’extérieur.
    je m'attends a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    While 
    ...
    End While 
     
    While 
    ...
    End While
    toi là ce que tu as fait c'est une boucle dans une boucle, autrement dit aussi 2 boucles imbriquées.

    J@ck
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par J@ckHerror Voir le message
    Oui sauf que tu ne fais pas ce que tu dis (par contre j'ai pas analysé si ce que tu dis produira ce que tu attends, désolé pas trop le temps mais j'ai comme un doute )



    Donc pourquoi ne le fais tu pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    While j < i
     
                K = 0
                While k < i
                ...
                    k = k + 1
                ...
                End While
    
    j = j + 1
    
    
    End While
    Voila en gras c'est pour coller parfaitement a ce que tu dis.
    Maintenant je ne peux que te conseiller d'utiliser des boucles for. Elles seront peut être plus parlantes pour toi. Tous ce qu'un for fait un while peu le faire et inversement. mais pour le for tu ne t'embetera pas avec la variables d'itération au milieu de tes autres instructions, bref va jeter un oeil !

    Le j=j+1 y est déjà , la seule chose qui me manquait était le k=0 .. et ça ne fonctionne toujours pas !

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Ah oui et à la base j'avais deux for, en voyant que ça ne marchait pas , j'ai essayé while for, et for while, ensuite while while ... j'ai l'impression que rien ne fonctionne

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour compléter ce que j'écrivais dans ton autre post, je pense qu'il faut simplifier. D'une part, je te déconseille d'utiliser des ListBox pour faire un algorithme. Cela ne doit servir qu'à de l'affichage mais surtout pas à du traitement. De plus, je te conseillerais d'utiliser un ListView plutôt que des ListBox. Enfin comme je le disais sur l'autre post, Linq est ton ami

    Pour afficher la liste des fichiers executables du dossier et sous-dossier c:\temp en ne prenant que les plus récents, tu poses un ListView avec 3 colonnes sur ta Form (LvFiles) et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim files As List(Of IO.FileInfo) = New IO.DirectoryInfo("c:\temp").
                GetFiles("*.txt", IO.SearchOption.AllDirectories).
                OrderByDescending(Function(file) file.LastWriteTime).
                GroupBy(Function(file) file.Name).
                Select(Function(file) file.First()).
                ToList()
     
    For Each aFile In files
       Dim item As ListViewItem = LvFiles.Items.Add(aFile.DirectoryName)
       item.SubItems.Add(aFile.Name)
       item.SubItems.Add(aFile.LastWriteTime.ToString())
       item.Tag = aFile
    Next
    (Maintenant, je dis ça, je dis rien)

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci @ebastien ! Ton code marche parfaitement, juste ce que je ne comprends pas c'est ta préference des listview aux listbox, alors que les listview sont pas lisibles à cause de la longueur de chaines de caractères que représente un chemin. Comme je comptais en faire une checklistbox pour sélectionner uniquement ceux que je veux installer ça me semblait plus pratique non ?
    En tout cas je te remercie de ton aide !


    EDIT: Il marche parfaitement mais ne fait pas du tout ce que je recherche en fait, sachant que les fichiers n'ont pas tous le même nom, j'avais utilisé leur dossier parent et récupéré seulement une partie de la chaine de caractère pour les comparer.. donc je vais devoir continuer à chercher

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Je suis quand même toujours perplèxe à propos de ces boucles qui ne s'imbriquent pas J'aimerais bien trouver d'ou vient le problème..

  15. #15
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par aureliaa_aa Voir le message
    EDIT: Il marche parfaitement mais ne fait pas du tout ce que je recherche en fait, sachant que les fichiers n'ont pas tous le même nom, j'avais utilisé leur dossier parent et récupéré seulement une partie de la chaine de caractère pour les comparer.. donc je vais devoir continuer à chercher
    Ah désolé si j'avais mal compris. Je pensais que tu avais des fichiers de même nom dans tes dossiers et que tu voulais la liste des plus récents. Là, j'avoue que je ne comprends pas ton besoin. Si tu as besoin d'aide, il faudra l'expliquer plus clairement, car le coup des dossiers parents, je ne vois pas.

    Quoi qu'il en soit, tu n'es pas sur la bonne piste avec ce code, il est trop compliqué, il mélange les choux et les carottes et utilise des controls listbox cachés pour faire des traitements. Je ne peux que te conseiller de reprendre tout depuis le début en commençant par positionner le paramètre Option Strict à On dans l'onglet Compile des options du projets (My Project). Tu verras ça va raler sévère au niveau du compilo avec ton code

    Courage, Rome ne s'est pas fait en un jour !

  16. #16
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Je suis quand même toujours perplèxe à propos de ces boucles qui ne s'imbriquent pas J'aimerais bien trouver d'ou vient le problème..
    J'ai toujours pas regardé en détail, mais n'oubli jamais un truc, c'est que le code fait ce que tu lui dit de faire, si il fait de la m*rd* c'est que tu lui dis d'en faire...

    Tous ca pour dire que ton problème n'est absolument pas du coté du framework du langage ou autre... mais entre la chaise et le clavier...
    Donc dans ton cas je prendrais un papier un stylo, je me fais un petit exemple en me disant j'ai un dossier avec ça dedans... et moi je veux avoir ça ... maintenant je fais l'algo qui passe de l'un à l'autre, et dans ta tête tu fais le débug en rejouant chaque ligne de code et en modifiant au fur et mesure les variables... enfin tout ce que normalement on a du t'apprendre à l'école ... ce genre de chose il m'arrive encore assez souvent (tous les jours ) de le faire alors pour une débutante... ça peut te paraitre fastidieux mais en le faisant dès le début tu aurais déjà fini, et compris ce que fais.

    J@ck.

    [EDIT] JE valide a 100% le dernier post de ebastien
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Pardon si je me suis mal exprimée .. Je vais essayer d'être plus claire
    En fait tous ces executables n'ont pas le même nom du tout, mais le dossier dans lequel ils sont ont tous presque le même nom (exemple altivarv1.1 et altivarv1.9)
    et chaque dossier peux contenir plusieurs executables..
    C'est pour ça que j'ai choisi de récupérer uniquement la chaine de caractères qui m'intéressait, pour pouvoir après les comparer
    Si vous avez des questions ou que c'est toujours pas clair je peux recommencer, mais merci à toi

  18. #18
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Merci J@ckHerror et je plussois ton post aussi !

    Citation Envoyé par aureliaa_aa Voir le message
    Pardon si je me suis mal exprimée .. Je vais essayer d'être plus claire
    En fait tous ces executables n'ont pas le même nom du tout, mais le dossier dans lequel ils sont ont tous presque le même nom (exemple altivarv1.1 et altivarv1.9)
    et chaque dossier peux contenir plusieurs executables..
    C'est pour ça que j'ai choisi de récupérer uniquement la chaine de caractères qui m'intéressait, pour pouvoir après les comparer
    Si vous avez des questions ou que c'est toujours pas clair je peux recommencer, mais merci à toi
    Ok donc si je résume, tu veux récupérer des exécutables qui n'ont pas le même nom, présents dans des dossiers qui ont preque le même nom mais pas tout à fait en fonction de critères dont un qui est la date. Allez encore un ou deux indices et on pourra peut-être t'aider

  19. #19
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Ce serait possible d'avoir un exemple (un vrai) avec une liste de fichier et de répertoires.

    Avec le résultat attendu.

    PS : Et je persiste et signe.

    1/ Au lieu de gérer 25 "tableaux" (dans des listbox) utilisez des objets pour n'avoir qu'une seule liste.
    2/ J'ai toujours pas compris pourquoi vous utilisez des listbox alors que vous souhaitez visiblement juste exécuter des exe en fonction de critères : quel besoin d'IHM ?
    On ne jouit bien que de ce qu’on partage.

  20. #20
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Histoire d'illustrer mes propos, voici un exemple de code.

    C'est une application console : j'ai toujours pas pigé l'intérêt des ListBox mise à part la méconnaissances des types array ou list...

    Code vb.net : 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.IO
     
    Module Module1
     
        Sub Main()
            Dim rep As DirectoryInfo = New DirectoryInfo("c:\in\fichiers")
            Dim listeFichiers As FileInfo() = rep.GetFiles("*.txt", SearchOption.AllDirectories)
     
            Dim dico As MonDico = New MonDico(listeFichiers)
     
            For Each fi As FileInfo In dico.Values
                Console.WriteLine("Exécuter {0} : {1}", fi.Name, fi.FullName)
            Next
     
            Console.ReadKey(True)
        End Sub
     
    End Module
     
    Class MonDico
        Private fichiers As Dictionary(Of String, FileInfo)
     
        Public Sub New(listeFichiers As FileInfo())
            fichiers = New Dictionary(Of String, FileInfo)
            For Each fi As FileInfo In listeFichiers
                Me(fi.Name) = fi
            Next
        End Sub
     
        Default Public Property Item(key As String) As FileInfo
            Get
                Return fichiers(key)
            End Get
     
            Set
                If fichiers.ContainsKey(key) Then
                    If (fichiers(key).LastWriteTimeUtc < Value.LastWriteTimeUtc) Then
                        fichiers(key) = Value
                    End If
                Else
                    fichiers.Add(key, Value)
                End If
            End Set
     
        End Property
     
        Public ReadOnly Property Values As FileInfo()
            Get
                Return fichiers.Values.ToArray()
            End Get
        End Property
    End Class
    On ne jouit bien que de ce qu’on partage.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Question requête imbriquée
    Par antalata dans le forum Oracle
    Réponses: 2
    Dernier message: 08/09/2010, 08h44
  2. requete imbriquée question basique
    Par pelloq1 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/05/2008, 00h51
  3. Question sur ma structure imbriquées
    Par beegees dans le forum Débuter
    Réponses: 7
    Dernier message: 16/12/2007, 13h43
  4. Question sur SP imbriquées, Transaction et Verrou
    Par Sacha999 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2007, 19h59
  5. Question sur instruction With imbriquée
    Par LadyWasky dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/10/2005, 11h26

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