Handels-Klausel erfordert WithEven Variable

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von keydrow.

    Handels-Klausel erfordert WithEven Variable

    Hallo ich habe ein Problem in meinem Code Gibt es 2 Fehler die ich nich wegbekomme.
    Diese sind:

    VB.NET-Quellcode

    1. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)

    Fehler:
    Fehler 1 Die Handles-Klausel erfordert eine WithEvents-Variable, die im enthaltenden Typ oder einem seiner Basistypen definiert wird. D:\Users\Marvin\Documents\Visual Studio 2012\Projects\Bukkit Server Consol\Bukkit Server Consol\Form1.vb 25 104 Bukkit Server Consol



    VB.NET-Quellcode

    1. Output.Text &= Line

    Fehler:
    Fehler 2 Die Handles-Klausel erfordert eine WithEvents-Variable, die im enthaltenden Typ oder einem seiner Basistypen definiert wird. D:\Users\Marvin\Documents\Visual Studio 2012\Projects\Bukkit Server Consol\Bukkit Server Consol\Form1.vb 31 103 Bukkit Server Consol
    Bei MSDN Steht
    WithEvents Sie haben in der Handles-Klausel keine WithEvents-Variable angegeben.
    Handles Verwenden Sie das Handles-Schlüsselwort am Ende einer Prozedurdeklaration, damit es Ereignisse behandelt, die durch eine mit demWithEvents-Schlüsselwort deklarierte Objektvariable ausgelöst werden.Doch das sagt mir nichts.
    Das muss sdann so oder äquivalent aussehen:

    VB.NET-Quellcode

    1. Dim WithEvents bgw As System.ComponentModel.BackgroundWorker
    2. Private Sub bgw_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
    3. End Sub
    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!

    RodFromGermany schrieb:

    Das muss sdann so oder äquivalent aussehen:

    Nun der Code des TE is formal richtig wenn WriteA als Delegat Sub WriteA(arg as string) definiert ist. Allerdings bezeichnet man solche Delegaten meist mit dem Zusatz handler, in dem Fall also WriteHandler.

    Was der Code soll ist natürlich etwas kryptisch , da der TE nach dem Post erfolgreich abgetaucht ist. Wie SpaceyX schon gesagt hat: der Fehler liegt bestimmt woanders.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public sendcommand As System.IO.StreamWriter
    3. Public konsole As Process
    4. Public Delegate Sub WriteA(ByVal Text As String)
    5. Sub Console()
    6. konsole = New Process()
    7. konsole.StartInfo.FileName = "C:\Program Files(x86)\Java\bin\Java.exe"
    8. konsole.StartInfo.Arguments = "-Xmx512M -Xms512M" & " -jar craftbukkit.jar -nojline"
    9. konsole.StartInfo.RedirectStandardError = True
    10. konsole.StartInfo.RedirectStandardInput = True
    11. konsole.StartInfo.RedirectStandardOutput = True
    12. konsole.StartInfo.CreateNoWindow = True
    13. konsole.StartInfo.UseShellExecute = False
    14. konsole.Start()
    15. konsole.BeginErrorReadLine()
    16. konsole.BeginOutputReadLine()
    17. sendcommand = konsole.StandardInput
    18. End Sub
    19. Private Sub p_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.OutputDataReceived
    20. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    21. End Sub
    22. Private Sub p_ErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.ErrorDataReceived
    23. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    24. End Sub
    25. Private Sub Write(ByVal Line As String)
    26. Output.Text &= Line
    27. End Sub
    28. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
    29. sendcommand.WriteLine(Befehl.Text)
    30. End Sub
    31. End Class

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „keydrow“ ()

    1. Ich habe nur die Zeilen angegeben die VB als Vehler ausgibt.
    2. Darunter stehen die 2 übelt

    EDIT:

    Sry ganz oben war eine Leerzeile das hatt VB verwirrt jetzt stimmts
    Zeile 24 und 30

    keydrow schrieb:

    Ist das völlig Falsch oder ein guter Ansatz:

    kA, da wir ja überhaupt nicht wissen was Du überhaupt vorhast - schliesslich warst Du mit Deinen Informationen ... ehmm ... ziemlich sparsam.

    Aufgrund des (kopierten ?) Codes und der Events würde ich annehmen Du hast einen Prozess als Basis (evtl was Du als konsole definiert) hast ?.

    Da würde sich eher Dim withevents p as process anbieten (oder halt dim withevents konsole as process). Der EventHandler WriteA scheint mir insgesamt ziemlich überflüssig.

    Für qualifizierte Hilfe also ein bisschen mehr über Dein Vorhaben erzählen.

    Gruss Kangaroo

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

    Wenn ich das mal in den Object-Browser eingebe, was ich Dir auch empfehle, dann erhalte ich das.

    System.Diagnostics.Process.OutputDataReceived(Object, System.Diagnostics.DataReceivedEventArgs)

    Das könnte bedeuten, dass Du:

    VB.NET-Quellcode

    1. Private WithEvents p As New Process


    deklarieren musst, damit die Sub, die mit Handles p.OutputDataReceivederstellt wurde, entsprechend beim Eintreten des Ereignisses ausgeführt wird. Weiterhin könnte das dazu führen, dass der Fehler verschwindet.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o