Problem mit Zugriff auf eine Variable _ListFile

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von jan99.

    Problem mit Zugriff auf eine Variable _ListFile

    Moin!

    ich stehe einmal wieder im Wald ..


    Folgenden Code habe ich:

    VB.NET-Quellcode

    1. ....
    2. Public Class MainDialog
    3. ....
    4. Private _ListFile As New List(Of String)
    5. ...
    6. Public Sub New(IniFile As String)
    7. .
    8. End Sub
    9. ...
    10. Private Sub CollectData()
    11. Console.WriteLine(Environment.NewLine & "CollectData ...")
    12. ' auslesen des DateiFilters
    13. ' For i As Integer = 0 To _ListFileFilter.Count - 1
    14. Dim Filter As String = "EBL*"
    15. Console.WriteLine(Environment.NewLine & "****** Dateifilter:= " & Filter & " ******" & Environment.NewLine)
    16. For Each Datei As String In My.Computer.FileSystem.GetFiles(_FolderSource, FileIO.SearchOption.SearchTopLevelOnly, Filter)
    17. Dim ShortName As String = System.IO.Path.GetFileName(Datei)
    18. Dim Suffix As String = System.IO.Path.GetExtension(Datei).ToUpper
    19. Dim ShortNameNoEx As String = System.IO.Path.GetFileNameWithoutExtension(Datei)
    20. Console.WriteLine(Environment.NewLine & "+- " & ShortName & " - " & Suffix & " - " & ShortNameNoEx)
    21. If _ListFile.Contains(ShortNameNoEx) = False Then
    22. _ListFile.Add(ShortNameNoEx)
    23. End If
    24. Select Case Suffix
    25. Case ".DLL"
    26. If _DicDataDLL.ContainsKey(ShortName) = True Then
    27. _DicDataDLL.Item(ShortName) = True
    28. Else
    29. _DicDataDLL.Add(ShortName, True)
    30. End If
    31. ...
    32. End Select
    33. Next
    34. End Sub
    35. Private Sub FillTable()
    36. Console.WriteLine(Environment.NewLine & "FillTable ...")
    37. With DVG
    38. .Rows.Clear()
    39. For i As Integer = 0 To _ListFile.Count - 1
    40. Dim row As ArrayList = New ArrayList
    41. row.Add(True) 'Filter setzen
    42. ' Dateiname ohne Suffix
    43. row.Add(_ListFile)
    44. Dim FileNameSource As String = FolderType.Source, _ListFile.Item(i), FileSuffix.DLL)
    45. Dim FileNameTarget As String = FolderType.Target, _ListFile.Item(i), FileSuffix.DLL)
    46. ' Spalte 2 für DLL
    47. If System.IO.File.Exists(FileNameTarget) = True Then ' wenn Datei vorhanden, dann auf Datum prüfen
    48. 'wenn die Datei auf dem Server älter ist ...
    49. Dim DateCreatedSource As Date ' Zeitstempel der Erzeugung
    50. Dim DateCreatedTarget As Date ' Zeitstempel der Erzeugung
    51. DateCreatedSource = System.IO.File.GetLastWriteTime(FileNameSource)
    52. DateCreatedTarget = System.IO.File.GetLastWriteTime(FileNameTarget)


    Nun geht es um die Variable _ListFile - diese wird in Zeile 4 definiert, dann in Zeile 24 ff und sogar noch in Zeile 47 verwendet.

    Aber in den Zeilen 52,54 und 55 wird hierzu angemerkt, dass diese nicht verwendet wird vor einer Belegung und als OBJECT angezeigt.



    Legt man den Mauszweiger noch in Zeile 47, dann wird noch als Typ ein List( Of String) angezeigt.

    Kann mir einer sagen wo mein Denkfehler ist?

    Gruß Jan
    Mit Me._ListFile kann man darauf zugreifen, frag mich jedoch nicht wieso. In C# tritt dieses Verhalten definitiv nicht auf.

    Edit:
    @jan99 lösche mal Zeilen 54 und 55 (ergeben sowieso so wie sie dort stehen keinen Sinn) und schau obs dann funktioniert.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „EaranMaleasi“ ()

    @jan99 Setz mal auf alle Zeilen mit _ListFile einen Haltepunkt und steppe durch.
    Hast Du Option Strict On :?:
    Das sieht mir aus, als wären das disjunkte Klassen, eine, deren Code Du postest und die, in der Du debuggst.
    ====
    Hast Du verschachtelte Klassen und die sind iwie vermischt?
    Wenn ja: pack mal die innere Klasse separat in das Projekt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin!

    das mit Zeile 54/55 war ein guter Tipp. Jetzt mit einem frischen Blick habe ich gesehen, dass die zugehörige Funktion fehlte.

    VB.NET-Quellcode

    1. Dim FileNameSource As String = GetFullFileName(FolderType.Source, _ListFile.Item(i), FileSuffix.DLL)
    2. Dim FileNameTarget As String = GetFullFileName(FolderType.Target, _ListFile.Item(i), FileSuffix.DLL)


    Sage nur - Brett vor dem Kopf.

    Gruß Jan