"Module-Anweisungen können nur auf Namespace- oder Dateiebene verwendet werden."

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    "Module-Anweisungen können nur auf Namespace- oder Dateiebene verwendet werden."

    bei mir is das "Module" neben "Module1" unterstrichen. Da steht "Module-Anweisungen können nur auf Namespace- oder Dateiebene verwendet werden." Was mache ich falsch????????


    Edit by ErfinderDesRades: (Thema verschoben) Grundlagen-Fragen bitte nicht im Tutorial stellen!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Wow wenn du die ganze Frage schon in den Thementitel packst ist der Beitrag eigentlich vollkommen nutzlos. Namespace ist immer ganz oben vor den Deklarationen. Private, Public etc. steht unter dem Namespace.

    Admin-Anmerkung. Der Threadtitel kam vermutlich durch das Verschrieben des Postings zustande.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Daniel85: Mach mal bitte einen ScreenShot von dem Code, wo was unterstrichen ist oder poste den ganzen Code.
    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!
    Bei folgendem Test hab ich es auch: it-visions.de/lserver/CodeSampleDetails.aspx?c=2804

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Module Dateisystem_Ueberwachung
    4. Public Sub Dateisystem_ueberwachen()
    5. Const PFAD As String = "C:\Ordner1"
    6. ' --- Instanziierung
    7. Dim watcher As New FileSystemWatcher()
    8. ' --- zu überwachendes Verzeichnis
    9. watcher.Path = PFAD
    10. ' --- zu überwachende Dateitypen
    11. watcher.Filter = "*.*"
    12. ' --- Unterverzeichnisse einschließen
    13. watcher.IncludeSubdirectories = True
    14. ' --- zu überwachende Änderungen
    15. watcher.NotifyFilter = _
    16. NotifyFilters.Attributes Or _
    17. NotifyFilters.LastAccess Or _
    18. NotifyFilters.LastWrite Or _
    19. NotifyFilters.Security Or _
    20. NotifyFilters.Size Or _
    21. NotifyFilters.FileName Or _
    22. NotifyFilters.DirectoryName
    23. ' --- Registrierung der
    24. ' --- Ereignisbehandlungsroutinen
    25. AddHandler watcher.Changed, _
    26. AddressOf DS_aenderung
    27. AddHandler watcher.Created, AddressOf DS_neu
    28. AddHandler watcher.Deleted, _
    29. AddressOf DS_loeschen
    30. AddHandler watcher.Renamed, AddressOf DS_name
    31. ' --- Starten der Überwachung
    32. out("Überwachen von " & PFAD & " beginnt...")
    33. watcher.EnableRaisingEvents = True
    34. ' --- Warten auf Benutzeraktion
    35. MsgBox( _
    36. "Klicken Sie hier, um die Überwachung " & _
    37. "zu beenden!", , "Überwachung")
    38. End Sub
    39. ' ### Ereignisbehandlungsroutine für
    40. ' ### Änderungsereignisse
    41. Public Sub DS_aenderung( _
    42. ByVal source As Object, _
    43. ByVal e As FileSystemEventArgs)
    44. out("Datei " & e.FullPath & _
    45. " wurde geändert!")
    46. End Sub
    47. ' ### Ereignisbehandlungsroutine für
    48. ' ### Erstellungsereignisse
    49. Public Sub DS_neu(ByVal source As Object, _
    50. ByVal e As FileSystemEventArgs)
    51. out("Datei " & e.FullPath & _
    52. " wurde neu angelegt!")
    53. End Sub
    54. ' ### Ereignisbehandlungsroutine für
    55. ' ### Löschereignisse
    56. Public Sub DS_loeschen(ByVal source As Object, _
    57. ByVal e As FileSystemEventArgs)
    58. out("Datei " & e.FullPath & _
    59. " wurde gelöscht!")
    60. End Sub
    61. ' ### Ereignisbehandlungsroutine für
    62. ' ### Namensänderungen im Dateisystem
    63. Public Sub DS_name(ByVal source As Object, _
    64. ByVal e As RenamedEventArgs)
    65. out("Datei " & e.OldFullPath & _
    66. " heißt nun " & e.FullPath & "!")
    67. End Sub
    68. End Module
    69. End Class

    Andinistrator schrieb:

    Bei folgendem Test hab ich es auch
    Pack den Code in eine WinForms-Form, FileSystemWatcher können nicht innerhalb einer Prozedur instanziiert werden, da sie bei Verlassen dieser Prozedur wieder weggeräumt werden.
    Zieh Dir den FileSystemWatcher im Designer auf die Form.
    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!
    Vielen Dank,
    1. Vielen Dank an diese Community das hier keiner lacht!
    2. ich hatte
    - einen "FileSystemWatcher1" in die Form gezogen
    - ein "Module1" in mein Projekt eingefügt
    - und den Code kopiert

    VB.NET-Quellcode

    1. Imports System.IO
    2. Module Dateisystem_Ueberwachung
    3. Public Sub Dateisystem_ueberwachen()
    4. Const PFAD As String = "C:\Ordner1"
    5. ' --- Instanziierung
    6. Dim watcher As New IO.FileSystemWatcher()
    7. ' --- zu überwachendes Verzeichnis
    8. watcher.Path = PFAD
    9. ' --- zu überwachende Dateitypen
    10. watcher.Filter = "*.*"
    11. ' --- Unterverzeichnisse einschließen
    12. watcher.IncludeSubdirectories = True
    13. ' --- zu überwachende Änderungen
    14. watcher.NotifyFilter = _
    15. NotifyFilters.Attributes Or _
    16. NotifyFilters.LastAccess Or _
    17. NotifyFilters.LastWrite Or _
    18. NotifyFilters.Security Or _
    19. NotifyFilters.Size Or _
    20. NotifyFilters.FileName Or _
    21. NotifyFilters.DirectoryName
    22. ' --- Registrierung der
    23. ' --- Ereignisbehandlungsroutinen
    24. AddHandler watcher.Changed, _
    25. AddressOf DS_aenderung
    26. AddHandler watcher.Created, AddressOf DS_neu
    27. AddHandler watcher.Deleted, _
    28. AddressOf DS_loeschen
    29. AddHandler watcher.Renamed, AddressOf DS_name
    30. ' --- Starten der Überwachung
    31. out("Überwachen von " & PFAD & " beginnt...")
    32. watcher.EnableRaisingEvents = True
    33. ' --- Warten auf Benutzeraktion
    34. MsgBox( _
    35. "Klicken Sie hier, um die Überwachung " & _
    36. "zu beenden!", , "Überwachung")
    37. End Sub
    38. ' ### Ereignisbehandlungsroutine für
    39. ' ### Änderungsereignisse
    40. Public Sub DS_aenderung( _
    41. ByVal source As Object, _
    42. ByVal e As FileSystemEventArgs)
    43. out("Datei " & e.FullPath & _
    44. " wurde geändert!")
    45. End Sub
    46. ' ### Ereignisbehandlungsroutine für
    47. ' ### Erstellungsereignisse
    48. Public Sub DS_neu(ByVal source As Object, _
    49. ByVal e As FileSystemEventArgs)
    50. out("Datei " & e.FullPath & _
    51. " wurde neu angelegt!")
    52. End Sub
    53. ' ### Ereignisbehandlungsroutine für
    54. ' ### Löschereignisse
    55. Public Sub DS_loeschen(ByVal source As Object, _
    56. ByVal e As FileSystemEventArgs)
    57. out("Datei " & e.FullPath & _
    58. " wurde gelöscht!")
    59. End Sub
    60. ' ### Ereignisbehandlungsroutine für
    61. ' ### Namensänderungen im Dateisystem
    62. Public Sub DS_name(ByVal source As Object, _
    63. ByVal e As RenamedEventArgs)
    64. out("Datei " & e.OldFullPath & _
    65. " heißt nun " & e.FullPath & "!")
    66. End Sub
    67. Private Sub out(p1 As String)
    68. Throw New NotImplementedException
    69. End Sub
    70. End Module


    Weiterhin hab ich versucht mit "Form1" das ganze per Button zu starten, um zu sehen ob hier die Messagebox aufgeht, wenn ich etwas ändere - Code:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub FileSystemWatcher1_Changed(sender As System.Object, e As System.IO.FileSystemEventArgs)
    4. Dim watcher As New IO.FileSystemWatcher()
    5. watcher.IncludeSubdirectories = True
    6. End Sub
    7. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    8. FileSystemWatcher1.BeginInit()
    9. End Sub
    10. End Class


    Wenn ich nun aber den Debug (fehlerfrei) starten und ein neues Textdokument einfüge oder lösche, tut sich leider nichts.

    Andinistrator schrieb:

    tut sich leider nichts.

    RodFromGermany schrieb:

    Zieh Dir den FileSystemWatcher im Designer auf die Form.
    Wo in Deinem Code ist die Variable Dim watcher As New IO.FileSystemWatcher()sichtbar?
    Was im Gegensatz zu watcher ist FileSystemWatcher1?
    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!

    Andinistrator schrieb:

    VB.NET-Quellcode

    1. Dim watcher As New IO.FileSystemWatcher()

    RodFromGermany schrieb:

    Wo in Deinem Code ist die Variable Dim watcher As New IO.FileSystemWatcher()sichtbar?
    (Prüfungsaufgabe) ;)
    -----
    und:
    Nutze bitte die Möglichkeit des Forums, Dateien anzuhängen:
    Eerweiterte Antwort => Dateianhänge => hochladen.
    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!
    Ich habe Listing aus Beitrag#5 etwas angepasst, und es funktioniert

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    4. Dateisystem_ueberwachen()
    5. End Sub
    6. ' Module Dateisystem_Ueberwachung
    7. Public Sub Dateisystem_ueberwachen()
    8. Const PFAD As String = "C:\Dev"
    9. ' --- Instanziierung
    10. Dim watcher As New FileSystemWatcher()
    11. ' --- zu überwachendes Verzeichnis
    12. watcher.Path = PFAD
    13. ' --- zu überwachende Dateitypen
    14. watcher.Filter = "*.*"
    15. ' --- Unterverzeichnisse einschließen
    16. watcher.IncludeSubdirectories = True
    17. ' --- zu überwachende Änderungen
    18. watcher.NotifyFilter = _
    19. NotifyFilters.Attributes Or _
    20. NotifyFilters.LastAccess Or _
    21. NotifyFilters.LastWrite Or _
    22. NotifyFilters.Security Or _
    23. NotifyFilters.Size Or _
    24. NotifyFilters.FileName Or _
    25. NotifyFilters.DirectoryName
    26. ' --- Registrierung der
    27. ' --- Ereignisbehandlungsroutinen
    28. AddHandler watcher.Changed, AddressOf DS_aenderung
    29. AddHandler watcher.Created, AddressOf DS_neu
    30. AddHandler watcher.Deleted, AddressOf DS_loeschen
    31. AddHandler watcher.Renamed, AddressOf DS_name
    32. ' --- Starten der Überwachung
    33. ' out("Überwachen von " & PFAD & " beginnt...")
    34. watcher.EnableRaisingEvents = True
    35. ' --- Warten auf Benutzeraktion
    36. 'MsgBox("Klicken Sie hier, um die Überwachung " & "zu beenden!", , "Überwachung")
    37. End Sub
    38. ' ### Ereignisbehandlungsroutine für
    39. ' ### Änderungsereignisse
    40. Public Sub DS_aenderung(ByVal source As Object, ByVal e As FileSystemEventArgs)
    41. out("Datei " & e.FullPath & " wurde geändert!")
    42. End Sub
    43. ' ### Ereignisbehandlungsroutine für
    44. ' ### Erstellungsereignisse
    45. Public Sub DS_neu(ByVal source As Object, ByVal e As FileSystemEventArgs)
    46. out("Datei " & e.FullPath & " wurde neu angelegt!")
    47. End Sub
    48. ' ### Ereignisbehandlungsroutine für
    49. ' ### Löschereignisse
    50. Public Sub DS_loeschen(ByVal source As Object, ByVal e As FileSystemEventArgs)
    51. out("Datei " & e.FullPath & " wurde gelöscht!")
    52. End Sub
    53. ' ### Ereignisbehandlungsroutine für
    54. ' ### Namensänderungen im Dateisystem
    55. Public Sub DS_name(ByVal source As Object, ByVal e As RenamedEventArgs)
    56. out("Datei " & e.OldFullPath & " heißt nun " & e.FullPath & "!")
    57. End Sub
    58. Private Sub out(msg As String)
    59. MsgBox(msg)
    60. End Sub
    61. End Class


    (Eine Beispielmeldung als Bildanhang.)
    Bilder
    • msg1.png

      3,37 kB, 316×157, 57 mal angesehen

    VB2013aufWin81 schrieb:

    Ich habe Listing aus Beitrag#5
    sowie diese Diskussion nicht verstanden, denn ich habe wieder eine prozedur-interne Instanz eines FileSystemWatchers erstellt:

    VB.NET-Quellcode

    1. Dim watcher As New FileSystemWatcher()
    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!
    aber warum ziehst du den FSW nicht einfach aufs Form?
    Das würde den Code um 50% reduzieren - tatsächlich bleibe nurnoch

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form3
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    4. FileSystemWatcher1.NotifyFilter = _
    5. NotifyFilters.Attributes Or _
    6. NotifyFilters.LastAccess Or _
    7. NotifyFilters.LastWrite Or _
    8. NotifyFilters.Security Or _
    9. NotifyFilters.Size Or _
    10. NotifyFilters.FileName Or _
    11. NotifyFilters.DirectoryName
    12. End Sub
    13. Public Sub DS_aenderung(ByVal source As Object, ByVal e As FileSystemEventArgs) Handles FileSystemWatcher1.Changed
    14. out("Datei " & e.FullPath & " wurde geändert!")
    15. End Sub
    16. Public Sub DS_neu(ByVal source As Object, ByVal e As FileSystemEventArgs) Handles FileSystemWatcher1.Created
    17. out("Datei " & e.FullPath & " wurde neu angelegt!")
    18. End Sub
    19. Public Sub DS_loeschen(ByVal source As Object, ByVal e As FileSystemEventArgs) Handles FileSystemWatcher1.Deleted
    20. out("Datei " & e.FullPath & " wurde gelöscht!")
    21. End Sub
    22. Public Sub DS_name(ByVal source As Object, ByVal e As RenamedEventArgs) Handles FileSystemWatcher1.Renamed
    23. out("Datei " & e.OldFullPath & " heißt nun " & e.FullPath & "!")
    24. End Sub
    25. Private Sub out(msg As String)
    26. MessageBox.Show(msg)
    27. End Sub
    28. End Class
    Jo - Neuling ist zu bemerken.
    Hier noch meine erster Wichtig-Hinweis für Neulinge: Visual Studio - Empfohlene Einstellungen

    Mach das unbedingt als erstes, noch vor jedem anderen weiteren Schritt. Diese Einstellungen machen den Unterschied aus, ob du vb.net als OOP-Sprache programmierst, oder als Noob-Tool für VB6-Zombies.

    VB2013aufWin81 schrieb:

    Ah, das muss man natürlich wissen

    RodFromGermany schrieb:

    Zieh Dir den FileSystemWatcher im Designer auf die Form.
    Lesen bildet.
    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!