myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Visual Basic 8, "... is not declared", Debug-Error (https://mygully.com/showthread.php?t=2074249)

J3r3my 08.07.10 14:54

Visual Basic 8, "... is not declared", Debug-Error
 
Hye Leute,

Wie ihr in der Überschrift schon lesen könnt habe ich ein Problem bei Visual Basic 2008. Ich wollte mir ein kleines "Counter-Strike Start Programm" erstellen. Das per Button das jeweilige CS bzw. CS Tool öffnet. Anfang hat das gut geklappt. Solange es nur die Spiele waren. Dann wollte ich einen Fehler darin verbessern sowie je ein Tool hinzufügen. Alles sieht perfekt aus. Das Fenster sowie der Code, ich als leihe, der Visual Basic erst seit ein paar Stundne nutzt kann sich das nicht erklären... Bei Debuggen kommt eine Fehlermeldung wo drin steht das einige Fehler im Code vorhanden sind und ob ich die letzte funktioniernde Datei öffnen will. Wenn ich unten in der "Error List" gucke, dann stehen dort einige Einträge. Der häufigste ist "... is not declared". Und wenige male "Expression expected". Ich denke die "Pro`s" unter euch werden den Fehler hier sofort finden. Bei Google habe ich nicht direkt etwas gefunden was mir weiterhilft... Könnt ihr mir weiterhelfen?

Hier der "Code"
Code:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Shell (\Counter-Strike 1.6\cstrike.exe)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Shell (\Counter Strike Condition Zero\Counter Strike Condition Zero)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Shell(\Counter-Strike Source\cstrike.exe)
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Shell (\Zubehoer\ESP_CSS.exe)
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Shell (\Zubehoer\ESP_CS.exe)
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Shell (\Zubehoer\ESP_CS.exe)
    End Sub
End Class

Achja, bevor die doofe Sprüche fliegen xD ESP ist nicht der Hack, sondern das "Einheizers S***** Pack". Halt für Buys***** unso :=)
MfG Jeremy

.ShoXx! 08.07.10 15:03

Was für ein Fehler kommt da genau und kommt der nur bei diesem Projekt oder auch bei anderen? Außerdem
Code:

Shell (\Counter-Strike 1.6\cstrike.exe)
wo liegt denn dein Programm? Müsstest du da nich C:\Programme\ usw..vorne hinschreiben?

Achja und Shell ist schon veraltet, benutz lieber Process.Start
Code:

Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) & "\Counter-Strike 1.6\cstrike.exe")
Naja habs übersehen, also kannst auch Shell verwenden aber wenn das wirklich der Code ist den du verwendest dann liegt dieses "not declared" daran, dass du den Pfad nicht als String übergibst. Also machs mal so: Shell ("\Counter-Strike 1.6\cstrike.exe") du hast diese 2 " Anführungszeichen nicht..

J3r3my 08.07.10 15:29

Also der Ordner "Counter-Strike 1.6" wird je nach Computer immer einen anderen Pfad haben. Aber sie wird immer im gleichen "Ordner" wie die ".exe" liegen.
Also bspw. D:\*.exe, D:\Counter-Strike 1.6
Und bei einem anderen Computer ists halt E:\*.exe, E:\Counter-Strike 1.6.

Stimmt so oder?


JUHUU DANKE :D Das mit den blöden "" wars. Unglaublich was so kleine Sch....dinger beim "Programmieren" aus machen :D

.ShoXx! 08.07.10 15:31

Achso das liegt einfach nur so da..dachte es ist im Programme\Valve Ordner..^^

J3r3my 08.07.10 15:46

Nene, das wird so ein StarterProgramm für die CS-Nonsteam Versionen :)

J3r3my 08.07.10 21:10

Hmm... nächstes Problem. Mein Plan mit den verschiedenen Pfaden geht nicht auf. Er spuckt eine Fehlermeldung aus. Wenn ich jedoch den kompletten, Momentanen Pfad angebe funktioniert es.
Jetzt die Frage: Wie kann ich einen Pfad angeben der immer auf einem anderen Laufwerkbuchstaben sein wird?

kain0905 08.07.10 21:36

Hi,

schreibe am Anfang das Verzeichnis der exe Datei in eine Variable und schnapp dir damit immer den aktuellen Pfad in welchem deine EXE grad liegt:

Code:

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim strEXEName As String
        Dim strEXEDir As String
        strEXEName = Reflection.Assembly.GetExecutingAssembly().Location
        strEXEDir = IO.Path.GetDirectoryName(strEXEName)
        Process.Start(strEXEDir & "\Counter-Strike 1.6\cstrike.exe")
    End Sub


J3r3my 08.07.10 23:07

Sorry, aber da Blick ich grad ünerhaupt nicht durch... Die Exe vom 1.6 liegt bspw. hier:
Code:

K:\Projekte\CS DVD\Counter-Strike 1.6
Dann würde das folgendermassen lauten?
Code:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim strEXEName As String
        Dim strEXEDir As String
        strEXEName = Reflection.Assembly.GetExecutingAssembly().Location
        strEXEDir = IO.Path.GetDirectoryName(strEXEName)
        Process.Start(strEXEDir & "K:\Projekte\CS DVD\Counter-Strike 1.6\cstrike.exe")
    End Sub


kain0905 08.07.10 23:25

Ehhhh nein ... die Variable "strEXEDir" gibt dir automatisch den Pfad DEINES Programmes wieder. Müsstest in diesem Fall bei dir also nur dein selbstgeschriebenes Programm unter "K:\Projekte\CS DVD" ablegen. Und wenn der nächste das ganze halt unter "D:\Games\CS DVD" hat dann enthält die Variable automatisch den entsprechenden Pfad

J3r3my 08.07.10 23:41

Also passt sich "solange alles in einem Paket" bleibt, sogesagt der Pfad an den Standort an?

Ich werde das morgen alle mal ins Programm reinbringen, melde mich dann wieder :)

Danke :)

.ShoXx! 09.07.10 12:21

Man kann doch auch curDir() verwenden um den Pfad zu bekommen in dem das eigene Programm ist?!
Ich versteh die Frage leider nicht..könntest du versuchen sie nochmal zu erklären? Welche .exe meinst du und was willst du mit der machen?

Also falls ich es richtig verstanden habe, dann sollte das klappen (ist jetzt ein Beispiel wenn dein Programm im Ordner Valve oder Projekte oder irgendwas liegt):
Code:

Process.Start(curDir() & "\Counter-Strike 1.6\cstrike.exe")
Also jetzt ist es egal ob der Laufwerksbuchstabe C, D, E oder F oder irgendwas ist, jedoch muss dein Programm auch im Valve oder Projekte usw. Ordner liegen. Der Öffnet dann den Ordner Counter-Strike 1.6 und startet darin dann die "cstrike.exe"..hoffentlich hasts verstanden^^

curDir() gibt dir den Pfad von deinem Programm zurück. Wenn du dein Prog z.B. in C:\Projekte steckst und die cstrike.exe hier liegt: C:\Projekte\Counter-Strike 1.6\cstrike.exe dann machst einfach:
Code:

Process.Start(curDir() & "\Counter-Strike 1.6\cstrike.exe")

J3r3my 09.07.10 16:25

Hey Danke euch. Beide Varianten funzen wunderbar. Aber ich verwende lieber Shoxx seine die ist um einiges kürzer und besser zu merken :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.