Übergabe an List(of String) funktioniert nicht

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. _"

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.

Ich hoffe Ihr könnt mir weiterhelfen.

Mit freundlichen Grüßen
Linden_

Hallo Linden,

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.

Ich hoffe Ihr könnt mir weiterhelfen.

Mit freundlichen Grüßen
Linden

MfG Alex

Hi danke schonmal für deine Antwort,

Filearray is wie folgt deklariert:

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

Hallo Linden,

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?

MfG Alex

Hallo Alex

dosearch wird wie folgt aufgerufen:

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

dieses Array ist genau gleich definiert.

MfG
Linden

Hi,

Problem gelöst.

Die Zeile die du im ersten Post geschrieben hast hat die Lösung gebracht vielen Dank!!

Ich hätte noch eine weitere Frage, mit welchem Anzeigemodul kann ich ein Explorerfenster zum anzeigen von Dateien in die Oberfläche einfügen?

Das Steuerelement nennt sich ListView, es hat mehrere Modi, wie man es vom Windows-Explorer auch kennt (Liste, Details, Kleine Icons, große Icons)