"end of"-Anweisung erwartet.

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von 91ervans.

    "end of"-Anweisung erwartet.

    Hallo liebe VBler,
    ich bin neu im Forum und derzeit ein ziemlicher Noob wenn es um VB geht :D .
    Ich habe vor einigen Tagen aus neugierde mit dieser Sprache angefangen und um uns einen Custom-Launcher für ein Spiel zu bauen .
    Jetzt habe ich aber das Problem das ich das Programm nicht Ordentlich debuggen kann weil noch ein Fehler ("end of"-Anweisung erwartet.) drin steckt.
    Ich habe Stunden verbracht um nach Löungen zu suchen und auszuprobieren :wacko: .

    Quellcode

    1. Public Class Launcher
    2. Private Sub Launcher_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    3. If (e.Button = Windows.Forms.MouseButtons.Left) Then
    4. Me.Capture = False
    5. Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    6. Else : End If
    7. End Sub
    8. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click, PictureBox1.BackColorChanged
    9. PictureBox1.Parent = Me
    10. PictureBox1.BackColor = Color.Transparent
    11. End Sub
    12. Private Sub PictureBox1_BackColorChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    13. End Sub
    14. Private Sub PictureBox1_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
    15. PictureBox1.BackgroundImage = My.Resources.start_hover
    16. End Sub
    17. Private Sub PictureBox1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
    18. PictureBox1.Parent = Me
    19. PictureBox1.BackgroundImage = Nothing
    20. End Sub
    21. Private Sub PictureBox1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
    22. Try
    23. Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe"), (IO.File.readalltext Environment.CurrentDirectory & "\para.txt")
    24. Application.Exit()
    25. Catch ex As Exception
    26. MsgBox("Spiel konnte nicht gestartet werden! Bitte fügen Sie den Launcher in den richtigen Ordner ein.", MsgBoxStyle.Critical)
    27. End Try
    28. End Sub
    29. Private Sub PictureBox4_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox4.MouseClick
    30. Process.Start("http://www.....com/ranking/stats.php")
    31. End Sub
    32. Private Sub Launcher_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    33. If My.Computer.FileSystem.FileExists(System.Environment.CurrentDirectory & "\para.txt") Then ' Überprüft ob die Datei "para.txt" vorhanden ist...
    34. Kill("para.txt") ' ...wenn ja soll diese gelöscht werden!
    35. My.Computer.Network.DownloadFile("http://www.....com/patcher/seraph_para.txt", Environment.CurrentDirectory & "\para.txt") ' Danach soll er direkt die neue Datei downloaden und als "para.txt" ..
    36. Else
    37. My.Computer.Network.DownloadFile("http://www.....com/patcher/para.txt", Environment.CurrentDirectory & "\para.txt") ' Sollte die Datei nicht vorhanden sein, einfach downloaden
    38. End If
    39. End Sub
    40. End Class

    Der Fehler "end of"-Anweisung erwartet. kommt in der Zeile 33 vor.
    ---Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe"), (IO.File.readalltext Environment.CurrentDirectory & "\para.txt")---
    Hoffentlich kann mir hier jemand weiterhelfen wenn er den Source-Code sieht.

    Mit freundlichen Grüßen 91ervans

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „91ervans“ ()

    So, Zeilenumbrüche hast du jetzt wegeditiert.
    Sieht viel besser aus.

    Also, der Fehler kommt in dieser Zeile, richtig?

    VB.NET-Quellcode

    1. Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe"), (IO.File.readalltext Environment.CurrentDirectory & "\para.txt")

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

    Hallo SystemUnknown,



    danke das du mich auf diesen kleinen Patzen aufmerksam gemacht hast.



    Da stand früher ein bisshen mehr Code was aber wieder entfernt wurde und das leider nicht sehr Ordentlich :D .

    Leider ist dies nicht die Lösung meines eigentlichen Problems :( .




    @m9898
    Das habe ich schon mehrmals gemacht und habe nur einen Zeilenumbruch verwendet.

    Ich glaube mal das es an meinem Browser (Opera) liegt. Ich versuche gleich noch einen anderen.


    Mit freundlichen Grüßen 91ervans
    in zeile 33 kann keine fehler auftreten, da stehts nix...poste mal ordentliche code und nicht diese ausschnitte...und wo der fehler kommt...dann reden wir weiter...bei diese gurken code kommt keine sau klar....

    EDIT// irgend wo hast End If vergessen, schau deine code durch !

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

    SystemUnknow schrieb:

    in zeile 33 kann keine fehler auftreten, da stehts nix...poste mal ordentliche code und nicht diese ausschnitte...und wo der fehler kommt...dann reden wir weiter...bei diese gurken code kommt keine sau klar....

    EDIT// irgend wo hast End If vergessen, schau deine code durch !
    Entschuldige.

    Aber leider weis ich auch nicht wieso sich da immer wieder Zeilenumbrüche eingeschlichen hatten.

    Hab jetzt mal einen anderen Browser verwendet und nun ist der Fehler in der Zeile 23 und beginnt mit "Process.Start(My.Application.Info.DirectoryPath....."

    Mit freundlichen Grüßen 91ervans
    Hallo 91ervans,

    durch die Klammerstellung ist dieser Befehl schon vollständig

    VB.NET-Quellcode

    1. Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe")

    Das was danach kommt macht für den Kompiler so keinen sinn.

    Gruss

    mikeb69

    mikeb69 schrieb:

    Hallo 91ervans,

    durch die Klammerstellung ist dieser Befehl schon vollständig

    VB.NET-Quellcode

    1. Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe")

    Das was danach kommt macht für den Kompiler so keinen sinn.

    Gruss

    mikeb69
    Hallo mikeb69,

    ich hätte dazu schreiben sollen das er die Spiel.exe mit gewissen Parametern starten soll. Diese Parameter entnimmt sich der Launcher aus der "para.txt"
    Die para.txt wird beim Programmstart gelöscht und neu angelegt (wird neu runtergeladen) wie man im unteren Teil des Codes entnehmen kann.
    Ich hoffe du verstehst was ich damit bezwecken will.

    Mit freundlichen Grüßen 91ervans
    Hallo 91ervans,

    du kannst der Process.Start Funktion einen zweiten Parameter übergeben.
    Sobald aber alle Klammern geschlossen wurden - was bei dir der Fall ist - geht der Kompiler davon aus, dass du keine weiteren Parameter mehr übergeben willst.
    In deinem Fall wird die eine Klammer nach dem Pfad der Datei geschlossen !

    Das was sich dahinter befindet macht dann so keinen Sinn mehr.

    Willst du Argumente übergeben, kannst du das bequem mit der ProcessStartInfo-Klasse erledigen.

    Hier wird im Prinzip alles schön erklärt.

    Gruss

    mikeb69

    m9898 schrieb:

    So, Zeilenumbrüche hast du jetzt wegeditiert.
    Sieht viel besser aus.

    Also, der Fehler kommt in dieser Zeile, richtig?

    VB.NET-Quellcode

    1. Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe"), (IO.File.readalltext Environment.CurrentDirectory & "\para.txt")
    Ja richtig aber ich verstehe nicht so ganz wie ich das IO.File.Readalltext nach der .exe setzen kann weil ich dauernd Fehler bekomme...

    @Mikeb69: Ich hab mir die Beispiele angesehen aber die helfen mir auch nicht wirklich weiter...
    Ich will ja das er die para.txt ausließt (IO.File.readalltext) und das dann als Parameter für die Spiel.exe einfügt.
    Sry vielleicht hab ich ja was übersehen ..

    MfG 91ervans

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

    m9898 schrieb:

    Und da übersehe ich gerade selbst den Fehler...

    Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe"), (IO.File.readalltext Environment.CurrentDirectory & "\para.txt")
    Wenn es nur so einfach wäre ...

    Nun bekomme ich den Fehler "Fehler bei der Überladungsauflösung, da keine zugreifbare "ReadAllText" diese Anzahl von Argumenten Akzeptiert."

    MfG 91ervans

    m9898 schrieb:

    Da hast du die Klammern vergessen...

    VB.NET-Quellcode

    1. Process.Start(My.Application.Info.DirectoryPath.ToString & "\Spiel.exe", IO.File.readalltext(Environment.CurrentDirectory & "\para.txt"))
    Du hast mir sehr bei meinem Problem geholfen :) . Es funktioniert einwandfrei.

    Danke dir .

    MfG 91ervans

    SystemUnknow schrieb:

    war für des ein misst:

    VB.NET-Quellcode

    1. Else : End If

    End If oder Else !

    Das ist kein Mist, vielleicht solltest du dich erstmal informieren...

    Mit dem Doppelpunkt kann man 2 Zeilen in eine schreiben, also war der Code VÖLLIG KORREKT.

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    Da dies ohnehin nicht das Hauptproblem war ist das Irrelevant.

    Trotzdem danke an SystemUnknown das er mich darauf aufmerksam gemacht hat ;) .

    Und danke an alle die mir Hilfestellung gegeben hatten.

    Super Forum. Werde ich nur weiterempfehlen können.

    Mit freundlichen Grüßen 91ervans