JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Problem mit DirectInput

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



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 16.06.2004, 18:42    Titel: Problem mit DirectInput Antworten mit Zitat

Hallo,
beim Beispiel DIRECTINPUTKEYBOARD bekomme ich immer 7 Fehler, obwohl mein Textvergleich-Programm keine unterschiede findet.
Die Fehler lauten:
Zitat:
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(126) : error C2143: Syntaxfehler : Fehlendes ')' vor 'constant'
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(126) : error C2660: 'CreateWindowExA' : Funktion akzeptiert keine 8 Parameter
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(163) : error C2601: 'InitDirectInput' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(203) : error C2601: 'ProcessInput' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(291) : error C2601: 'CleanUpDirectInput' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(307) : fatal error C1004: Unerwartetes Dateiende gefunden
Fehler beim Ausführen von cl.exe.


Was ist das Problem??
Vielen Dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fowly
JLI'ler



Anmeldedatum: 25.01.2004
Beiträge: 196
Wohnort: Detmold - NRW
Medaillen: Keine

BeitragVerfasst am: 16.06.2004, 19:07    Titel: Antworten mit Zitat

also ich denke mal, dass du vergessen hast irgendwo die klammer zuzusammen. am besten du überprüfst das nochmal.
_________________
<-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->

Das Spiel zu unserer Schule:

http://www.grabbe-game.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 16.06.2004, 20:54    Titel: Antworten mit Zitat

Danke erstmal für die Antwort.
Hab die Klammern nochmal überprüft, jetzt gibt es auch nur noch 3 Fehler.
Diese lauten folgendermaßen:
Zitat:
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(162) : error C2601: 'InitDirectInput' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(202) : error C2601: 'ProcessInput' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Programme\Microsoft Visual Studio\MyProjects\DirectX und Visual C++\DIRECTINPUTKEYBOARD\DIRECTINPUTKEYBOARD.CPP(290) : error C2601: 'CleanUpDirectInput' : Lokale Funktionsdefinitionen sind unzulaessig


Die Funktionsdefinitionen sind unzulässig, was muss ich da machen um die Fehler wegzubekommen??
Vielen Dank.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 16.06.2004, 21:26    Titel: Antworten mit Zitat

Ich würde sagen da fehlt noch eine Klammer.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 16.06.2004, 21:53    Titel: Antworten mit Zitat

Jo, eine geschweifte fehlt, also eine } am Ende einer Funktion, würde ich erfahrungsgemäß tippen. Hin und wieder hat man mal den Fehler.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 17.06.2004, 17:42    Titel: Antworten mit Zitat

mhh...also ich habe nochmal alles kontrolliert, habe aber keine fehlenden Klammern ausmachen können, auch nicht mit einem Textvergleichprogramm.
Kann das noch an etwas anderem liegen?
Und an der Stelle mit den Mängeln sind auch irgendwie keine Klammern zu wenig oder zu viel.
Vielen Dank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 17.06.2004, 18:41    Titel: Antworten mit Zitat

Tja also Fehlermeldungen alleine sind wenig aussagekräftig. Wie wärs mal mit nem bischen Quelcode? Zeigt er irgendne bestimmte Zeile an, wenn du einen Doppelklick auf den Fehler machst?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 17.06.2004, 20:54    Titel: Antworten mit Zitat

Ja also er zeigt die Stellen mit den Fehlern an. |--> Weist auf die Zeile auf den Fehler hin.
Hier sind die Codeausschnitte:
Der Erste:
Zitat:
BOOL InitDirectInput(HINSTANCE hInst)
|--> {
// DirectInput8-Objekt anlegen
if(FAILED(DirectInput8Create(hInst, DIRECTINPUT_VERSION,
IID_IDirectInput8,(void**)&lpDI,NULL)))
{
MessageBox(hWnd, "Fehler beim Anlegen des DirectInput8-Objekts","Fehler",MB_OK);
return FALSE;
}

// Gerät für die Tastatur festlegen
if(FAILED(lpDI->CreateDevice(GUID_SysKeyboard, &lpDIKeyboard, NULL)))
{
MessageBox(hWnd, "Fehler beim Anlegen des Tastatur-Geräts","Fehler",MB_OK);
return FALSE;
}

// c_dfDIKeyboard ist eine vordefinierte Variable
if(FAILED(lpDIKeyboard->SetDataFormat(&c_dfDIKeyboard)))
{
MessageBox(hWnd,"Fehler beim Setzen des Datenformats","Fehler",MB_OK);
return FALSE;
}

// Kooperationsebene festlegen
if(FAILED(lpDIKeyboard->SetCooperativeLevel(hWnd,DISCL_FOREGROUND |
DISCL_NONEXCLUSIVE)))
{
MessageBox(hWnd,"Fehler beim Setzen der Kooperationsebene (DirectInput)","Fehler",MB_OK);
return FALSE;
}


// Zugang zur Tastatur verschaffen
lpDIKeyboard->Acquire();

return TRUE;
}


Der Zweite:
Zitat:
void ProcessInput(void)
|--> {
// alle Tasten der Tastatur
bool bKeyboard[256];

int y = 20; int x = 20;

if(FAILED(lpDIKeyboard->GetDeviceState(sizeof(bKeyboard),(LPVOID)&bKeyboard)))
{
// die Tastatur wurde zwischenzeitlich
// durch eine andere Anwendung genutzt
// Kontrolle wiederholen
lpDIKeyboard->Acquire();
return;
}


Der Dritte Fehler:
Zitat:
void CleanUpDirectInput(void)
|--> {
if(NULL != lpDIKeyboard)
{
lpDIKeyboard->Unacquire();
lpDIKeyboard->Release();
lpDIKeyboard = NULL;
}

if(NULL != lpDI)
{
lpDI->Release();
lpDI = NULL;
}
}
}



Die ganzen Tabulatoren usw. macht die Zitat-Funktion weg, ich hoffe es geht auch so.
Vielen Dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 17.06.2004, 21:03    Titel: Antworten mit Zitat

Das müsste dann heißen, dass die Funktion vor "BOOL InitDirectInput(HINSTANCE hInst)" nicht mit } abgeschlossen wurde.
Es kann auch sein, dass du innerhalb der Funktion mal (z.B. bei if/switch-Anweisungen) eine geschweifte Klammer vergessen hast Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 18.06.2004, 13:30    Titel: Antworten mit Zitat

So wie ich das jetzt sehe, ist im zweiten Abschnitt eine } zu wenig und im dritten eine } zu viel. Und statt der Zitatfunktion könntest du auch CodeBlöcke nehmen, dann bleibt die Einrückung.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 18.06.2004, 13:35    Titel: Antworten mit Zitat

An dieser Stelle sieht es so aus als würde ein Klammer fehlen:
Zitat:
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// testen, um welche Nachticht es sich handelt
switch(msg)
{
// wenn das Fenster geschlossen wird, eine Nachricht senden,
// die das Programm beendet
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;

case WM_KEYDOWN:
switch(wParam)
{
// Wenn ESC gedrückt, Programm beenden
case VK_ESCAPE:
DestroyWindow(hWnd);
break;
}

// Wenn wir uns nicht um die Nachricht gekümmert haben
// wird sie an die Standardnachrichtenverarbeitung von Windows
// geschickt
return DefWindowProc(hwnd, msg, wParam, lParam);
}

Die Stelle unterscheidet sich tatsächlich von der von der Buch-CD.
Allerdings zeigt das das Vergleichsprogramm nicht an, was mich wundert, und die Fehlermeldungen werden auch nicht weniger Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 18.06.2004, 14:08    Titel: Antworten mit Zitat

Ja, es fehlt eine geschweifte Klammer hinter der zweiten switch-Anweisung.

Übrigens werden alle switch-Anweisungen(bzw. der gesamte Block) mit einem Semikolon abgeschlossen.
Code:
switch(variable)
{
case 1:
   {
       Foo.bar();
       break;
   }
};


Ohne das abschließende Semikolon müsste es so auch zu Kompilerfehlern kommen.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
JkerryZ
JLI Master Trainee



Anmeldedatum: 18.05.2004
Beiträge: 575
Wohnort: Wolfsburg
Medaillen: Keine

BeitragVerfasst am: 18.06.2004, 15:13    Titel: Antworten mit Zitat

@Lord, Danke!
Seltsam, ich hatte vorhin nochmal einen 2. Arbeitsbereich gemacht, wo ich meinen Fehlerhaften Code reingesetzt habe, der ging auch nicht, bei beiden waren die gleichen Fehler.
Jetzt habe ich die fehlende Klammer beim einen eingesetzt, und dann ging er beim anderen war eine Klammer zum Schluss die beim andere zuviel gewesen war richtig. Naja was solls, jetzt funktioniert jedenfalls alles.

Also nochmal vielen Dank!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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