C++ programm problem



  • Liebe Community;

    ich habe ich mich jetzt vorbereitend auf mein Studium, mit der Programmiersprache c++ beschäftigt. Meine ersten eigenen Programme laufen einwandfrei und ich habe mich jetzt daran gesetzt, ein Programm zuschreiben, welches meine Programme die ich zum Spielem am Computer habe bündelt und startet. Es soll eine Windows 32 Konsolenanwendung werden. Mein Quellcode sieht zur zeit so aus:

    #include "stdafx.h"
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int menu;
    int _tmain(int argc, _TCHAR* argv[])
    {
    	system ("COLOR 0c");
    	marke:
    	do
    	{
    	cout<<"Meine wichtigen Programme.\n\n";
    	cout<<"(1) Teamspeak 3 \n";
    	cout<<"(2) Starcraft 2 \n";
    	cout<<"(3) Counterstrike Source \n";
    	cout<<"(4) Programm Schliessen \n\n";
    	cout<<"Deine Wahl?:";
    	cin>> menu;
    	if (menu == 1){
    		system("C:\Program Files (x86)\TeamSpeak 3 Client\ts3client_win32.exe");
    		goto marke;
    	}
    	if (menu == 2){
    
    	}
    	}
    	while(menu == 4);
    	{
    	return 0;
    	}
    }
    

    Ich hab W7 64 bit vielleicht liegt es daran^^. Wäre aber blöd ich hoffe es liegt am Code.

    Danke im Vorraus euer MaiTaniC



  • und was ist nun dein Problem?

    außer das goto ein no go in der Programierung ist(ganz schlechter style)

    while(menu == 4) -> was soll das bezwecken? sollte das nicht ein if werden?

    wobei bei deiner Auswertung solltest du eine switch verwenden die lösst dein Problem der Auswertung sicher zufriedenstellender

    #include "stdafx.h"
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int menu;
    int _tmain(int argc, _TCHAR* argv[])
    {
        system ("COLOR 0c");
        do
        {
        cout<<"Meine wichtigen Programme.\n\n";
        cout<<"(1) Teamspeak 3 \n";
        cout<<"(2) Starcraft 2 \n";
        cout<<"(3) Counterstrike Source \n";
        cout<<"(4) Programm Schliessen \n\n";
        cout<<"Deine Wahl?:";
        cin>> menu;
        switch (menu)
        {
            case 1:
                system("C:\Program Files (x86)\TeamSpeak 3 Client\ts3client_win32.exe");
                break;
            case 2:
                //Starte starkraft
                break;
    
        }
        }
        while(menu != 4);
    
    }
    

    so mal in der art, hab das jetzt hier ohne test hingeschrieben also könnten noch fehler drin sein



  • xD stimmt mein Problem hätte ich dazuschreiben müssen..^^
    Also das Programm läuft ohne Probleme nur startet es die Anwendung nicht. Der Pfad muss irgendwie falsch sein. Ich habs aber mehrmals überprüft und keinen Fehler gefunden.

    Danke für deine Antwort ich werde es gleich implementieren.



  • Bekommst du eine Fehlermeldung?
    Daran sieht man meistens wo der Fehler liegt 😃

    Ich würds so machen:

    #include "stdafx.h"
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int menu;
    int _tmain(int argc, _TCHAR* argv[])
    {
        system ("COLOR 0c");
        while(true) //Wird permanent wiederholt ausser option 4 wird gewählt
        {
            cout <<"Meine wichtigen Programme." << endl << endl; //endl hießt endline, also Zeilenumbruch
            cout << "(1) Teamspeak 3" << endl;
            cout << "(2) Starcraft 2" << endl;
            cout << "(3) Counterstrike Source" << endl;
            cout << "(4) Programm Schliessen" << endl << endl;
            cout << "Deine Wahl?:";
            cin >> menu;
    
            switch (menu)
            {
            case 1:
                system("C:\\Program Files (x86)\\TeamSpeak 3 Client\\ts3client_win32.exe");
            break;
            case 2:
                //Starte Starcraft 2
            break;
            case 3:
                //Starte Counterstrike Source
            break;
            case 4:
                exit(0); //Funktion um Programm zu beenden
            break;
            default: //Dies wird angesprungen, sollte die Eingabe keine der 'cases' zutreffen
                cout << "Bitte gib eine der angegebenen Zahlen ein." << endl;
                system("pause"); //Konsole wird gestoppt, bis der Benutzer eine beliebige Taste drückt
                system("cls"); // Die Konsole wird vom ASCII-Müll befreit ;)
            }
        }
    }
    

    Das mit dem Programm starten liegt an dem Dateipfad, sieh mal hier rein 😉
    Gutes schaffen 😉



  • Dank eurer Hilfe sieht das Programm jetzt schon um einiges besser aus.
    Trotzdem kommt immernoch diese Fehlermeldung:

    Der Befehl "C:\Program" ist entweder falsch geschrieben oder konnte nicht gefunden werden.



  • Dann musst du auch die Leerzeichen escapen (mist, ich hätte das nicht wegeditieren sollen xD). Denn so glaubt die Konsole, du willst das ausführen:

    C:\\Program
    mit
    Files
    mit
    (x86)\\TeamSpeak
    mit
    3
    und mit
    Client\\ts3client_win32.exe
    

    Geht natürlich nicht, daher muss du alle Leerzeichen mit einem \ versehen was dann so aussieht:

    C:\\Program\ Files\ (x86)\\TeamSpeak\ 3\ Client\\ts3client_win32.exe
    


  • Das klingt logisch :D.

    Ich denke jetzt werde ich schon alleine darauf kommen.
    Ihr habt mir wirklich viel geholfen und ich denke ich bin jetzt auf jedenfall schon ein Stückchen weiter.


Anmelden zum Antworten