vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Liste Fileinformationen, Threading, Invoke .... 
Autor: Manfred X
Datum: 16.07.17 14:43

Die Liste mit den FileInfos befindet sich im Array "FileInformationArray".
Die Array-Klasse bietet die "Sort"-Methode zum Sortieren der Elemente, wobei u.a.
auf die "IComparable"-Schnittstelle der Array-Elemente zurückgegriffen werden kann.

Im Beispiel sind die Array-Elemente Instanzen der FileInformation-Klasse.
Diese Klasse benötigt deshalb eine Implementierung der Schnittstelle.
Sie sieht dann z.B. so aus:
Public Class FileInformation
    Implements IComparable(Of FileInformation)
 
    ''' <summary>Name und Extensions der Datei</summary>
    Public ReadOnly name As String
    '''<summary>Name des Ordners/Unterordners, in dem sich die Datei 
    ' befindet</summary>
    Public ReadOnly folder As String
    ''' <summary>Laufwerk, Pfad und Name der Datei</summary>
    Public ReadOnly fullpath As String
    ''' <summary>Länge der Datei in Bytes</summary>
    Public ReadOnly length As Long
    ''' <summary>Datum der letzten Änderung</summary>
    Public ReadOnly LastWriteTime As Date
    ''' <summary>Schreibschutz gesetzt?</summary>
    Public ReadOnly IsReadonly As Boolean
 
 
    Friend Sub New(fi As IO.FileInfo)
 
       With fi
          name = .Name
          fullpath = .FullName
          folder = IO.Path.GetFileName(.DirectoryName)
          length = .Length
          LastWriteTime = .LastWriteTime
          IsReadonly = .IsReadOnly
       End With
    End Sub
 
 
    Public Function DateTime_CompareTo(other As FileInformation) As Integer _
        Implements System.IComparable(Of FileInformation).CompareTo
 
        Dim diff As Long = Me.LastWriteTime.Ticks - other.LastWriteTime.Ticks
        If Math.Abs(diff) < TimeSpan.TicksPerMinute Then
           Return 0 'Differenz kleiner 1 Sekunde gilt als gleichzeitig !!!
        ElseIf diff >= TimeSpan.TicksPerSecond Then
           Return 1
        Else
           Return -1
        End If
 
        End Function
 End Class
Um das Sortieren des "FileInformationArray" gemäß dem "LastWriteTime"-Member komfortabel
durchführen zu können, wird in der Klasse "FilesystemStuff" eine entsprechende Methode
ergänzt:
Public Sub SortDateTime(ByVal sortorder As SortOrder)
 
    Array.Sort(FileInformationArray)
 
    If sortorder = Windows.Forms.SortOrder.Descending Then
       Array.Reverse(FileInformationArray)
    End If
End Sub
Im Formular (Methode: SetFileList) kann das gefüllte Array sortiert werden.
Damit das Resultat besser aussieht, wird die Listbox "lboFiles"
durch ein Listview-Control ersetzt.
Dim lvwFileInformation As New ListView With _
   {.Parent = Me, .Top = 170, .Size = New Size(300, 200)}
 
Private Sub SetFileList()
 
   With lvwFileInformation
      'Listview vorbereiten
      .Items.Clear()
      .Columns.Clear()
      .View = View.Details
      .Columns.Add("Name", 100)
      .Columns.Add("LastWriteTime", 150)
      .Columns.Add("Folder", 150)
 
      'Sortieren des Array
      FileStuff.SortDateTime(SortOrder.Descending)
 
      'Array-Daten in ListviewItems eintragen
      For i As Integer = 0 To FileStuff.FileInformationArray.Length - 1
         Dim it As FileSystemStuff.FileInformation = _
                FileStuff.FileInformationArray(i)
         Dim lvi As ListViewItem = .Items.Add(it.name)
         lvi.SubItems.Add(it.LastWriteTime.ToString)
         lvi.SubItems.Add(it.folder)
      Next i
   End With
 
End Sub
Das ausgetauschte Control erfordert eine weitere Anpassung beim Invoke:
Private Sub FileStuff_Finished(sender As Object, _
            e As FileSystemStuff.FilesystemStuffArgs) Handles FileStuff.Finished
    infotext = _
       "Dateien sind gelistet worden " & vbCrLf & "Gesamtzahl: " & _
       e.Count.ToString
 
    lblinfo.Invoke(New MethodInvoker(AddressOf SetInfoText))
    lvwFileInformation.Invoke(New MethodInvoker(AddressOf SetFileList))
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zuletzt geänderte Datei herausfinden3.369TheExOne26.11.07 23:01
Re: Zuletzt geänderte Datei herausfinden2.235GPM27.11.07 01:19
Re: Zuletzt geänderte Datei herausfinden2.195TheExOne27.11.07 13:38
Re: Zuletzt geänderte Datei herausfinden1.67500tommy11.07.17 21:02
Re: Zuletzt geänderte Datei herausfinden1.681Manfred X12.07.17 09:42
Re: Zuletzt geänderte Datei herausfinden1.61100tommy13.07.17 21:32
Re: Zuletzt geänderte Datei herausfinden1.716Franki14.07.17 02:22
Liste Fileinformationen, Threading, Invoke ....1.787Manfred X14.07.17 08:52
Re: Liste Fileinformationen, Threading, Invoke ....1.58700tommy15.07.17 17:38
Re: Liste Fileinformationen, Threading, Invoke ....1.633Manfred X16.07.17 14:43
Re: Liste Fileinformationen, Threading, Invoke ....1.73600tommy16.07.17 20:19
Re: Liste Fileinformationen, Threading, Invoke ....1.604effeff16.07.17 22:19
Re: Liste Fileinformationen, Threading, Invoke ....1.60600tommy17.07.17 06:58
Re: Liste Fileinformationen, Threading, Invoke ....1.604Manfred X17.07.17 10:18
Re: Zuletzt geänderte Datei herausfinden1.58700tommy17.07.17 11:43
Re: Zuletzt geänderte Datei herausfinden1.685Manfred X17.07.17 13:27
Re: Zuletzt geänderte Datei herausfinden1.69600tommy17.07.17 14:47
Re: Zuletzt geänderte Datei herausfinden1.605Manfred X17.07.17 18:54
Re: Zuletzt geänderte Datei herausfinden1.56100tommy17.07.17 21:08
Re: Zuletzt geänderte Datei herausfinden1.604Manfred X18.07.17 06:10
Re: Zuletzt geänderte Datei herausfinden1.57000tommy18.07.17 11:09
Re: Zuletzt geänderte Datei herausfinden1.574Manfred X18.07.17 13:19
Re: Zuletzt geänderte Datei herausfinden1.58100tommy18.07.17 14:12
Re: Zuletzt geänderte Datei herausfinden1.585Manfred X18.07.17 20:31
Re: Zuletzt geänderte Datei herausfinden1.58200tommy18.07.17 20:36
Re: Zuletzt geänderte Datei herausfinden1.682Manfred X18.07.17 21:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel