Hi,
ich versuche gerade eine List (Of T) einer selbst erstelleten Struktur zu durchsuchen und einen eventuell gefundenen Index des gefunden Eintrages zurück zugeben, aber ich weis nicht genau wie ich das lösen kann.
also, hier mal mein ansatz :
der relevante Teil ist folgender :
Nur weis ich nicht wie ich in der "Finden" Methode den index des Objektes herausbekommen kann.
Es soll herausgefunden werden ob in der Liste DInfo bereits ein Element mit dem gleichen Dateiname entahlten ist. Wenn ja soll das Element AnzahlAufrufe des Listenelements um 1 erhöht werden.
Ich habe mir schon ein par Beiträge sowie die MSDN durchgelesen und auch etwas gefunden aber nicht verstanden.
wenn mir jemand weiterhelfen kann wäre das sehr nett.
mfg
ich versuche gerade eine List (Of T) einer selbst erstelleten Struktur zu durchsuchen und einen eventuell gefundenen Index des gefunden Eintrages zurück zugeben, aber ich weis nicht genau wie ich das lösen kann.
also, hier mal mein ansatz :
VB.NET-Quellcode
- Imports System
- Imports System.IO
- Public Class Form1
- Dim VZInfo As New List(Of VerzeichnisInfo)
- Dim DInfo As New List(Of DateiInfo)
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- For Each dr As System.IO.DriveInfo In My.Computer.FileSystem.Drives
- If (dr.DriveFormat = "FAT32") Or (dr.DriveFormat = "NTFS") Then
- VZInfo.Add(New VerzeichnisInfo With {.Format = dr.DriveFormat, .RootDirectory = dr.RootDirectory.Name, .Typ = dr.DriveType, .VolumeLabel = dr.VolumeLabel})
- End If
- Next
- For i = 0 To VZInfo.Count - 1
- Dim fsw As New FileSystemWatcher
- fsw.Path = VZInfo(i).RootDirectory
- fsw.IncludeSubdirectories = True
- fsw.EnableRaisingEvents = True
- fsw.NotifyFilter = NotifyFilters.Attributes
- AddHandler fsw.Changed, AddressOf OnChanged
- Next
- End Sub
- Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
- Name_ = e.FullPath
- If DInfo.Exists(AddressOf Exestiert) Then
- Index_ = DInfo.FindIndex(AddressOf Finden)
- Else
- DInfo.Add(New DateiInfo With {.Dateiname = e.FullPath, .AnzahlAufrufe = 1})
- End If
- End Sub
- Private Name_ As String
- Private Index_ As Integer
- Function Finden(ByVal obj As DateiInfo) As Integer
- End Function
- Function Exestiert(ByVal obj As DateiInfo) As Boolean
- If obj.Dateiname = Name_ Then
- Return True
- Else
- Return False
- End If
- End Function
- Structure VerzeichnisInfo
- Public Format As String
- Public Typ As String
- Public VolumeLabel As String
- Public RootDirectory As String
- End Structure
- Structure DateiInfo
- Public Dateiname As String
- Public AnzahlAufrufe As UInteger
- End Structure
- End Class
der relevante Teil ist folgender :
VB.NET-Quellcode
- Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
- Name_ = e.FullPath
- If DInfo.Exists(AddressOf Exestiert) Then
- Index_ = DInfo.FindIndex(AddressOf Finden)
- Else
- DInfo.Add(New DateiInfo With {.Dateiname = e.FullPath, .AnzahlAufrufe = 1})
- End If
- End Sub
- Private Name_ As String
- Private Index_ As Integer
- Function Finden(ByVal obj As DateiInfo) As Integer
- End Function
- Function Exestiert(ByVal obj As DateiInfo) As Boolean
- If obj.Dateiname = Name_ Then
- Return True
- Else
- Return False
- End If
- End Function
Nur weis ich nicht wie ich in der "Finden" Methode den index des Objektes herausbekommen kann.
Es soll herausgefunden werden ob in der Liste DInfo bereits ein Element mit dem gleichen Dateiname entahlten ist. Wenn ja soll das Element AnzahlAufrufe des Listenelements um 1 erhöht werden.
Ich habe mir schon ein par Beiträge sowie die MSDN durchgelesen und auch etwas gefunden aber nicht verstanden.
wenn mir jemand weiterhelfen kann wäre das sehr nett.
mfg