ich erarbeite momentan an einem Programm in der Sprache VB.net dass den Rechner nach Daten durchsucht und das Ergebnis am Ende in einem List(of String) abspeichern soll.
Jedoch funktioniert das nicht.
folgende Codezeile sollte eigentlich die gefunden „Files(i)“ in das das List(Of String) Filearray abspeichern:
FileArray.Add(Files(i).ToString)
So sieht der komplette Block aus:
If FileFilter(Files(i).ToString, SearchWord, Filter) = True Then
FileArray.Add(Files(i).ToString)
MsgBox("Suche erfolgreich")
RaiseEvent MatchFound(Me, Files(i))
End If
Sollten die Filter erfüllt sein, Soll er die geprüfte Datei (eigentlich der Dateipfad) in das Array gespeichert werden.
Jedoch bekomme ich sobald er diesen Befehl ausführen will die Meldung:
" Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. _"
Dies heißt doch dass ich nicht füllen kann da nichts vorhanden wäre,mit was man das Filearray füllen könnte. „Files(i)“ ist jedoch gefüllt.
Im Netz habe ich leider nichts wirklich gefunden was mir helfen könnte, jedoch ohne erfolg.
wo und wie hast du denn Filearray definiert?
Ohne es nun zu testen, aber setze mal vor dem ersten Zugriff auf Filearray folgende Zeile hinzu. Sprich in Deinem Falle vor
FileArray.Add
If Filearray is Nothing then FileArray=New List(of String)
Guten Tag zusammen,
ich erarbeite momentan an einem Programm in der Sprache VB.net
dass den Rechner nach Daten durchsucht und das Ergebnis am
Ende in einem List(of String) abspeichern soll.
Jedoch funktioniert das nicht.
folgende Codezeile sollte eigentlich die gefunden „Files(i)“
in das das List(Of String) Filearray abspeichern:
FileArray.Add(Files(i).ToString)
So sieht der komplette Block aus:
If FileFilter(Files(i).ToString, SearchWord, Filter) = True
Then
FileArray.Add(Files(i).ToString)
MsgBox(„Suche erfolgreich“)
RaiseEvent MatchFound(Me, Files(i))
End If
Sollten die Filter erfüllt sein, Soll er die geprüfte Datei
(eigentlich der Dateipfad) in das Array gespeichert werden.
Jedoch bekomme ich sobald er diesen Befehl ausführen will die
Meldung:
"Der Objektverweis wurde nicht auf eine Objektinstanz
festgelegt."
Das deutet darauf hin das FileArray den Wert Nothing hat. Entweder hast du es nicht mit New instanziert oder du hast irgendwo auf Nothing gesetzt!
Dies heißt doch dass ich nicht füllen kann da nichts vorhanden
wäre,mit was man das Filearray füllen könnte. „Files(i)“ ist
jedoch gefüllt.
Richti, aber FileArray hat den Wert Nothing und kann keine Daten aufnehmen. Eine Zuweisung alla
FileArray.Add("Irgendwas")
würde auch fehlschlagen!
Im Netz habe ich leider nichts wirklich gefunden was mir
helfen könnte, jedoch ohne erfolg.
Private Sub DoSearch(ByVal Root As String, ByVal SearchWord As String, ByVal Filter As SearchFilter, **ByRef FileArray As List(Of String)**)
Try
If AbortProgress = True Then Exit Sub
My.Application.DoEvents()
Dim Files() As String = System.IO.Directory.GetFiles(Root)
Dim Folders() As String = System.IO.Directory.GetDirectories(Root)
Dim Recurse As Boolean = True
If Filter.Listing = SearchFilter.LO.BOTH Or Filter.Listing = SearchFilter.LO.FILES\_ONLY Then
Dim Maxschleife = UBound(Files)
For i As Integer = 0 To Maxschleife
'Dim Test(Maxschleife) As String
' MsgBox(FileFilter(Files(i).ToString, SearchWord, Filter), , "Filter Passend?")
If FileFilter(Files(i).ToString, SearchWord, Filter) = True Then
MsgBox(Files(i))
FileArray.Add(Files(i).ToString)
' Test(i) = Files(i).ToString
MsgBox("Suche erfolgreich")
RaiseEvent MatchFound(Me, Files(i))
End If
Next
End If
Ok, da fehlt nen Stückel von der Defintion der Function
Aber ich gehe mal davon aus das die Definition
ByRef FileArray as List(of String)
lautet?
Aber es fehlen noch Info’s! Irgendwo in deinem Progg rufst du doch die Sub DoSearch auf. Dort muss Du Ihr doch als Parameter unter anderem dein FileArray übergeben.
Wo und wie geschieht dies? Wie ist dort Das zu uebergebende Array definiert?
Public Sub Search(ByVal Root As String, ByVal SearchWord As String, ByVal Filter As SearchFilter, ByRef FileArray As List(Of String))
ErrorLog.Remove(0, ErrorLog.Length)
AbortProgress = False
DoSearch(Root, SearchWord, Filter, FileArray)
AbortProgress = False
RaiseEvent SearchComplete(Me)
End Sub