Toon posts:

[VB.NET] Maximum bepalen

Pagina: 1
Acties:
  • 32 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Weet er iemand hoe je de 10 grootste bestanden van een bepaalde directory kunt opvragen, ik ben bezig met een prog te maken dat uit een opgegeven directory de 10 grootste bestanden moet tonen in een listbox maar het gaat langs geen kanten.

code:
1
2
3
4
5
6
7
8
9
Private Function SearchFiles(ByVal objDirectoryInfo As System.IO.DirectoryInfo) As Boolean
        Dim objFileInfo As System.IO.FileInfo
        Dim lngMaximum As Long
        lngMaximum = 0
        For Each objFileInfo In objDirectoryInfo.GetFiles
                ...
                CheckedListBoxFiles.Items.Add(objFileInfo.FullName & " (" & objFileInfo.Length / 1024 / 1024 & " MB)", True)
        Next
End Function


Het gaat dus over het stuk met lngMaximum waar ik niet weet hoe te beginnen...

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Gewoon alle bestanden in een arraylist gooien en dan zelf de 10 grootste er uit pikken. Lijkt mij gewoon even wat simple denk werk.

Wat wil er precies niet?

edit:
Ik moet leren type

[ Voor 27% gewijzigd door pjvandesande op 22-03-2004 12:26 ]


  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Gebruik System.Collections.SortedList. Je moet per object een key en een value toevoegen aan de sortedlist.

Gebruik als key de lengte van een bestand en de value bestandsnaam zelf. Staat alles gelijk gesorteerd en laad de eerste tien in je listbox.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Gewoon een eigen class maken, welke IComparable implementeert en dan kan je Array.Sort gebruiken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ok, na heel de dag zoeken achter een oplossing heb ik op Internet iets over de quicksort methode gevonden dat werkt ... maar van klein naar groot op bestandsgrootte. Zou iemand is willen kijken wat ik moet aanpassen aan de functie om van groot naar klein te sorteren want ik kan het maar niet vinden...

code:
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
Public Sub QuickSort(ByRef vArray As Object, ByRef AccordingTo As Short, ByRef Dimension2Size As Short, ByRef L As Short, ByRef R As Short)
        '   name of array, sorting according to which dimension?, size of second dimension, lbound(), ubound()
        Dim i, a, j As Short
        Dim Y, X, z As Object

        i = L
        j = R
        X = vArray((L + R) / 2, AccordingTo)

        Do While (i <= j)
            System.Windows.Forms.Application.DoEvents()
            Do While (vArray(i, AccordingTo) < X And i < R)
                i = i + 1
            Loop
            Do While (X < vArray(j, AccordingTo) And j > L)
                j = j - 1
            Loop
            If (i <= j) Then
                Y = vArray(i, AccordingTo)
                vArray(i, AccordingTo) = vArray(j, AccordingTo)
                vArray(j, AccordingTo) = Y
                For a = 0 To AccordingTo - 1
                    z = vArray(i, a)
                    vArray(i, a) = vArray(j, a)
                    vArray(j, a) = z
                Next a
                For a = AccordingTo + 1 To Dimension2Size
                    z = vArray(i, a)
                    vArray(i, a) = vArray(j, a)
                    vArray(j, a) = z
                Next a
                i = i + 1
                j = j - 1
            End If
        Loop

        If (L < j) Then QuickSort(vArray, AccordingTo, Dimension2Size, L, j)
        If (i < R) Then QuickSort(vArray, AccordingTo, Dimension2Size, i, R)

    End Sub

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Het is niet de bedoeling van P&W dat wij hier de code voor jou gaan aanpassen.

Met een beetje debugging en logisch nadenken kan je die routine wel zelf aanpassen zodanig dat het van groot naar klein gaat.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.