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

VBScript Discussion :

Fonction de tri sur tableau


Sujet :

VBScript

  1. #1
    Membre éclairé Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Par défaut Fonction de tri sur tableau
    Bonjour,

    Je suis débutant en VBScript et je suis sur un projet pour lequel celui-ce semble pourtant bien indiqué. Il s'agit de trouver, dans un premier temps, le dossier le plus récent contenu dans un répertoire, puis en faire quelques trucs.

    Je fais donc comme suit: je mets la liste des noms de dossiers avec leur ancienneté dans un tableau (avec un format "ancienneté | nom_dossier | heure_acces"), puis je trie ce tableau pour pourvoir ensuite accéder au plus récent, plus ancient, etc. J'ai pris une fonction de tri à bulles que je vois u peu partout sur le net (je sais que ce n'est pas optimal, mais comme le tableau ne sera pas grand, ça devrait aller).

    Problème: j'ai une erreur à la deuxième ligne de la fonction qui me dit qu'il y a un type mismatch sur l'appel de UBound, j'ai l'impression qu'il ne reconnait pas l'argument de la fonction comme étant un array. Voilà le code en entier, et si quelqu'un pouvait me dire quelle est la bonne façon d'utiliser les fonctions, comme récupérer leur résultat proprement, etc... Bref, à l'aide!

    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
    Dim fso, folder, files, tableau(), folderpath, temp2, outputfile
    i = 0
    j = 0
    k = 0
     
    dateNow = Now
     
    folderpath = "C:\Program Files"
    filepath = "C:\Users\Mikhail\Desktop\output.txt"
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(folderpath)
    If fso.FileExists(filepath) Then
    	fso.DeleteFile(filepath)
    End If
    Set outputfile = fso.CreateTextFile(filepath, ForAppending)
     
     
    For each truc in folder.SubFolders
    	ReDim Preserve tableau(k)
    	temp1 = truc.DateLastAccessed
    	diff = DateDiff("n", temp1, dateNow)
    	tableau(k) = diff & " | " & truc.Name & " | " & temp1
    	'MsgBox(tableau(k))
    	k = k + 1
    Next
     
    sizeTab = UBound(tableau)
    For i = 0 to sizeTab
    	outputfile.WriteLine(tableau(i))
    Next
    outputfile.WriteLine("================================================================================")
     
    Function BubbleSort(tabtosort)
    	For i = UBound(tabtosort) - 1 To 0 Step -1
    		For j = 0 to i
    			If tabtosort(j) > tabtosort(j+1) = 1 Then
    				temp2 = tabtosort(j+1)
    				tabtosort(j+1) = tabtosort(j)
    				tabtosort(j) = temp2
    			End If
    		Next
    	Next
    	BubbleSort = tabtosort
    End Function
     
    BubbleSort(tableau)
     
    For i = 0 to sizeTab
    	outputfile.WriteLine(BubbleSort(i))
    Next
     
    MsgBox("Last accessed foler: " & BubbleSort(0))

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    Ce message d'erreur me parait normal, il y a certaines choses qui ne vont pas dans ton code : ta fonction de tri (BubbleSort) attend en paramètre un tableau; or toi tu l'appelles 2 fois à la fin de ton code avec un entier passé en paramètre, et effectivement dès la première ligne de la fonction BubbleSort, la fonction UBound appelée renvoie une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    BubbleSort(tableau) '--> OK : tableau est bien de type Array
     
    For i = 0 to sizeTab
    	outputfile.WriteLine(BubbleSort(i)) '--> NOK : i est un entier
    Next
     
    MsgBox("Last accessed foler: " & BubbleSort(0))'--> NOK : 0 est un entier
    Essaie comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BubbleSort(tableau) 
    For Each strTmp in tableau
    	outputfile.WriteLine strTmp 
    Next 
    MsgBox("Last accessed foler: " & strTmp)
    Bonne continuation

  3. #3
    Membre éclairé Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Par défaut
    Finalement, j'ai contourné le problème, mais je garde la solution sous le coude. Les fonctions de tri, ça sert toujours. Merci beaucoup

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

Discussions similaires

  1. [Sharepoint Designer 2007] Tri sur tableau se marche pas
    Par Enthau dans le forum SharePoint
    Réponses: 0
    Dernier message: 23/04/2008, 14h48
  2. Tri sur tableau multi pour génération de jointures SQL
    Par Djakisback dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 21/09/2007, 14h58
  3. pb de tri sur tableau
    Par bagos01 dans le forum ASP
    Réponses: 3
    Dernier message: 07/02/2007, 22h47
  4. Réponses: 3
    Dernier message: 21/09/2006, 15h55
  5. Tri sur tableau à 2 dimensions
    Par Poussy-Puce dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/03/2006, 19h36

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