JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=79a84cf53c906964a2fd5ae20b5abc3eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Komischer Error bei Switch Schleife seit Visual C++ Express

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Snowsong
Junior JLI'ler


Alter: 37
Anmeldedatum: 15.05.2007
Beiträge: 53

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 00:40    Titel: Komischer Error bei Switch Schleife seit Visual C++ Express Antworten mit Zitat

Hallo Leute,
ich programmier nach einer etwas längeren Pause wieder in C++
und habe mir dazu die Visual C++ 2005 Express Edition hergenommen.
Ich hab sie natürlich mit dem Windows Platform SDK etc erweitert
sodass rein weg alles gehn müsste was ich brauche.
Nun habe ich in meinen Game Loop wie immer eine Switch-Case
Anweisung und ich bekomm komische Errors die ich mir nicht erklären kann.

Hier der Code
CPP:
switch(Game_Status)
         {
         case GAME_INIT:
            {
            }
            break;
         case GAME_RE_INIT:
            {
            }
            break;
         case GAME_PRE_MENU:
            {
            }
            break;
         case GAME_MENU:
            {
            }
            break;
         case GAME_PRE_RUN:
            {
            }
            break;
         case GAME_RUN:
            {
            }
            break;
         }


Hier die Schönen Errors dazu
Zitat:

.\Main.cpp(98) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(98) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(99) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(102) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(102) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(103) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(106) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(106) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(107) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(110) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(110) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(111) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(114) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(114) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(115) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
.\Main.cpp(118) : error C2143: Syntaxfehler: Es fehlt ':' vor ';'
.\Main.cpp(118) : error C2143: Syntaxfehler: Es fehlt ';' vor ':'
.\Main.cpp(119) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'


Nun was könnte ich dagegen unternehmen?
Vor diesem Code kann es nicht sein da ich mit einer leeren
Switch Anweisung keine Errors bekomme.

Ich bedanke mich schonmal im Voraus.



PS.: Ich bins der alte Samus_Aran wenn mich noch jemand kennen sollte
kann nur aus Privaten Gründen den Namen nich mehr ab leider und würde mich freuen wenn irgendjemand den alten Account "Samus_Aran" löschen
könnte. Möchte ja nicht das Forum mit toten Accounts blockieren :(
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 01:28    Titel: Antworten mit Zitat

Account wird man nicht löschen können, weil dann auch die Beiträge gelöscht würden und dann viele Threads keinen SInn mehr machen würden.


Ich tippe darauf, das du irgendwo ein : statt ein ; gemacht hast. Erkennt man ja kaum. Evtl. einfach mal im Quellcode suchen. Sollte man schnell finden.

Achja, bitte Cpp statt Code Tags benutzen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Snowsong
Junior JLI'ler


Alter: 37
Anmeldedatum: 15.05.2007
Beiträge: 53

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 01:50    Titel: Antworten mit Zitat

Hab alles schon durchgeschaut ob auch nur irgendwo : oder ; vertauscht
ist, aber dem ist nicht so.

Wenn ich es so lasse:
CPP:
switch(Game_Status)
         {
         }


ist alles in Ordnung sobald ich die erste case Anweisung gebe
fangen die Fehler an...

An Unicode oder so kann das aber nich liegen oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 05:39    Titel: Antworten mit Zitat

Vielleicht sind die Konstanten (oder was du auch verwendest) nicht definiert oder verfügbar.
Und nein, was sollte das mit Unicode zu tun haben?! Shocked
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
valentin_
Mini JLI'ler


Alter: 34
Anmeldedatum: 16.07.2006
Beiträge: 28
Wohnort: Graz
Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 07:38    Titel: Antworten mit Zitat

Das ganze sollte so funktionieren:

CPP:
switch(Game_Status)
         {
         case GAME_INIT:           
            //Anweisung
            break;
         case GAME_RE_INIT:
            //Anweisung
            break;
         case GAME_PRE_MENU:
            //Anweisung           
            break;
         case GAME_MENU:
            //Anweisung             
            break;
         case GAME_PRE_RUN:
            //Anweisung             
            break;
         case GAME_RUN:
            //Anweisung               
            break;
         }


Du brauchst nicht bei jedem case eine geschweifte Klammer!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 08:51    Titel: Antworten mit Zitat

Die Klammern verursachen den Fehler auch nicht...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snowsong
Junior JLI'ler


Alter: 37
Anmeldedatum: 15.05.2007
Beiträge: 53

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 14:39    Titel: Antworten mit Zitat

Die Klammern sind nicht notwendig aber stören auch nicht und mir helfen
sie damit ich im Code besser Ordnung halten kann.
Hmm ob das was mit Unicode zu tun hat ka weil ich kenn erlich gesagt
nicht direkt den Unterschied zwischen Unicode und Multi-Byte aber
programmiern tu ich irgendwie automatisch anscheinend Unicode.

Alle Dinge sind per #define festgelegt und ich such immernoch woran es liegen kann.
Hmm zur Not kann ich auch mal den Kompletten Code posten wenn es
helfen würde?!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 14:58    Titel: Antworten mit Zitat

Wär evtl hilfreich, ja.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 15:05    Titel: Antworten mit Zitat

Du kannst es statt mit define mal so versuchen
CPP:
static const int GAME_INIT = 0;


Keine Ahnung warum es nicht funktioniert...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snowsong
Junior JLI'ler


Alter: 37
Anmeldedatum: 15.05.2007
Beiträge: 53

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 16:06    Titel: Antworten mit Zitat

Die Headerfile
CPP:
#ifndef MAIN_H
#define MAIN_H
#pragma warning (disable : 4786)
/////////////////////////////////////////////////
//Main.h                                       //
/////////////////////////////////////////////////

/////////////////////////////////////////////////
//Header Dateien zum einbinden
#include <windows.h>
#include "cGraphic.h"
#include "cInput.h"
#include "cSound.h"
#include "cManager.h"
#include "cSprite.h"

/////////////////////////////////////////////////
//Variablen
HWND               hwnd;                              //Handle des Hauptfensters
MSG                  message;                           //Variable für die Nachrichtenbehandlung
int                  Game_Status = 0;                        //Status des Programms

int                  Keyboard;                           //Die Tastatur
DIMOUSESTATE         Mouse;                              //Die Maus

/////////////////////////////////////////////////
//#define zum Status des Programmes
#define               GAME_INIT      10;                     //Das Spiel wird Initialisiert
#define               GAME_RE_INIT   11;                     //Das Spiel wird neuinitialisiert (zb bei ALT+TAB)
#define               GAME_PRE_MENU   20;                     //Das Menü wird geladen
#define               GAME_MENU      21;                     //Das Spiel befindet sich im Menü
#define               GAME_PRE_RUN   30;                     //Das Spiel wird vorbereitet
#define               GAME_RUN      31;                     //Das Spiel läuft

/////////////////////////////////////////////////
//Klassenableitungen
cGraphic            Video;                              //Die Grafikschnittstelle
cInput               Input;                              //Die Eingabe Schnittstelle
cSound               Sound;                              //Die Soundschnittstelle
cManager            Manager;                           //Die Managerschnittstelle
cSprite               Sprite;

/////////////////////////////////////////////////
//Prototypen der Funktionen
HWND CreateMainWindow(HINSTANCE hInstance);                     //Funktion zur Erzeugung des Hauptfensters
LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg,            //Funktion zur Verarbeitung der Nachrichten des Hauptfensters
                        WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,   //Die WinMain Funktion
               LPSTR lpCmdLine, int nCmDShow);

#endif MAIN_H


Und hier die CPP
CPP:
/////////////////////////////////////////////////
//Main.cpp                                     //
/////////////////////////////////////////////////

/////////////////////////////////////////////////
//Header Dateien zum einbinden
#include "Main.h"

/////////////////////////////////////////////////
//Funktionen
//Funktion zur Erzeugung des Hauptfensters
HWND CreateMainWindow(HINSTANCE hInstance)
{
   //Die Klasse für das Hauptfenster festlegen
   WNDCLASSEX Hauptfensterklasse =
   {
      sizeof(WNDCLASSEX),                  //Größe der Struktur
      NULL,                           //Fensterstil (CS_...)
      MessageHandler,                     //Handler für Nachrichten des Fensters
      0,                              //nicht benötigt (Speicherreservierung)
      0,                              //nicht benötigt (Speicherreservierung)
      hInstance,                        //Instanz des Fensters
      NULL,                           //Icon Groß
      NULL,                           //Cursor
      (HBRUSH)GetStockObject(BLACK_BRUSH),   //Fensterhintergrund
      NULL,                           //Handle für das Menü
      "Hauptfenster",                     //Name der Klasse
      NULL,                           //Icon klein
   };

   //Die Klasse für das Hauptfenster registrieren für weiteren Gebrauch
   RegisterClassEx(&Hauptfensterklasse);

   //Das Hauptfenster erstellen und einen Zeiger darauf zurückgeben
   return CreateWindowEx(NULL,               //Stil
                  "Hauptfenster",         //Name der WNDCLASSEX Struktur Klasse des Fensters
                  "Project WSim",         //Fenstertitel
                  WS_OVERLAPPEDWINDOW |   //Die Fenstereigenschaften (WS_...)
                  WS_VISIBLE,
                  0,                  //Position X des Fensters
                  0,                  //Position Y des Fensters
                  1024,               //Breite des Fensters
                  768,               //Höhe des Fensters
                  NULL,               //Handle des Elternfensters falls WS_CHILDWINDOW
                  NULL,               //Handle des Menüs
                  hInstance,            //Instance des Fensters
                  NULL);               //nicht benötigt (Parameter für MDI-Anwendungen
}

//Funktion zur Verarbeitung der Nachrichten des Hauptfensters
LRESULT CALLBACK MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
   //Welche Nachricht wurde genau empfangen
   switch(msg)
   {
   case WM_DESTROY:
      {
         PostQuitMessage(0);
         return 0;
      }
      break;
   }

   //Falls die Nachricht nicht vorhanden ist Standart Windowsmethode aufrufen
   return DefWindowProc(hWnd, msg, wParam, lParam);
}

//Die WinMain Funktion
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmDShow)
{
   //Das Hauptfenster erzeugen
   hwnd = CreateMainWindow(hInstance);

   //Hauptfenstererzeugung auf Fehler Prüfen
   if(hwnd == 0)
   {
      MessageBox(0, "Es ist ein Fehler beim erzeugen des Hauptfensters aufgetreten", "Fehler", MB_OK);
      return 0;
   }

   //Nachrichtenverarbeitungsschleife
   while(message.message != WM_QUIT)
   {
      //Der GameLoop
      if(PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
        else
        {
         Manager.Update();
         Keyboard = Input.GetKeyboard();
         Mouse = Input.GetMouse();

         switch(Game_Status)
         {
         case GAME_INIT:
            {
            }
            break;
         case GAME_RE_INIT:
            {
            }
            break;
         case GAME_PRE_MENU:
            {
            }
            break;
         case GAME_MENU:
            {
            }
            break;
         case GAME_PRE_RUN:
            {
            }
            break;
         case GAME_RUN:
            {
            }
            break;
         }
      }
   }

   return 0;
}


hoffe ihr findet etwas^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 16:14    Titel: Antworten mit Zitat

CPP:
#define               GAME_INIT      10;                     //Das Spiel wird Initialisiert
#define               GAME_RE_INIT   11;                     //Das Spiel wird neuinitialisiert (zb bei ALT+TAB)
#define               GAME_PRE_MENU   20;                     //Das Menü wird geladen
#define               GAME_MENU      21;                     //Das Spiel befindet sich im Menü
#define               GAME_PRE_RUN   30;                     //Das Spiel wird vorbereitet
#define               GAME_RUN      31;                     //Das Spiel läuft


Überall ein ";" zuviel am Ende.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 16:50    Titel: Antworten mit Zitat

David hat Folgendes geschrieben:
CPP:
#define               GAME_INIT      10;                     //Das Spiel wird Initialisiert
#define               GAME_RE_INIT   11;                     //Das Spiel wird neuinitialisiert (zb bei ALT+TAB)
#define               GAME_PRE_MENU   20;                     //Das Menü wird geladen
#define               GAME_MENU      21;                     //Das Spiel befindet sich im Menü
#define               GAME_PRE_RUN   30;                     //Das Spiel wird vorbereitet
#define               GAME_RUN      31;                     //Das Spiel läuft


Überall ein ";" zuviel am Ende.

und gleichzeitig ein weiterer gravierender Grund, keine #defines zu benutzen, wenn man sieht wie aufwendig die Fehlersuche war! Razz

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snowsong
Junior JLI'ler


Alter: 37
Anmeldedatum: 15.05.2007
Beiträge: 53

Medaillen: Keine

BeitragVerfasst am: 18.05.2007, 16:52    Titel: Antworten mit Zitat

Ne oder ich hab nich schon wieder so n einfachen Fehler begangen -.-
man man man naja wie damals in der Schule nur Schusselfehler und schon
von Note 1 auf 2 oder 3 -.-

Danke das ihr mir geholfen habt^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum