C++ Builder XE5, Benötige dringend Hilfe
-
Hallo,
ich habe ein für mich großes Problem. Ich habe vor 6 Jahren das letzte Mal in C++ programmiert,dazu mit dem Borland C++ Builder oder dem Turbo C++. Aus gegebenem Anlass habe ich mit dem Programm C++ Builder XE 5 (erstmal eine Trailversion) ein Memoryspiel programmiert. Das läuft soweit super, allerdings kennt er die Funktion random_shuffle und scheinbar algorithm.h nicht. Ich habe schon alles mögliche probiert, leider erfolglos. Das hat zur Folge, dass das Memory ohne der Funktion zwar läuft, aber die Kartenpaare direkt nebeneinander liegen. Da dieses Memoryspiel sehr bald fertig sein muss, komme ich unter Druck und habe mir schon mehr als den Kopf zerbrochen. Ich hoffe so sehr, dass mir hier jemand helfen kann. Den Quellcode der betreffenden Funktion habe ich angehangen. Es funktioniert weder mit algorithm.h noch mit algorithm[/code]pragma hdrstop
#include "memoryfeld.h"
#include "hauptformular.h"
#include <cstdlib>MemoryFeld::MemoryFeld()
{
int bild=0;
int Feld[42];
OffeneKarten=0;
player=0;
Paare[0]=0;
Paare[1]=0;
//Inititalisere Aufgedeckt mit -1
for (int i=0; i<21; i++)
for (int j=0; j<2; j++){
Aufgedeckt[i] [j].x=-1;
Aufgedeckt[i] [j].y=-1;
}
//Belegen von Feld
for (int i=0; i<42; i++)
{
Feld[i]=bild;
if (((i+1) % 2 == 0)) bild++;
}
//Mischen von Feld
randomize();random_shuffle(Feld, Feld+42);
//Kopieren aus Feld in InitFeld
for (int i=0; i<7; i++)
for (int j=0; j<6; j++)
{InitFeld[i][j]=Feld[j*7+i];
SpielFeld[i][j]=22;
}
}[code]
-
Und die Fehlermeldung lautet? (Von der Version mit <algorithm>, alle Standardheader heißen seit 15 Jahren ohne .h-Erweiterung.)
-
Sobald ich <algorithm> und random_shuffle (Feld, Feld+42) benutze, kommen genau 29 Fehlermeldungen. Nehme ich beides raus, läuft das Programm.
Abhängigkeiten des Projekts werden überprüft...
Compilieren von memory.cbproj (Debug, Win32)
bcc32 Befehlszeile für "memory.cpp"
c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\bin\bcc32.exe -D_DEBUG -D_RTLDLL;USEPACKAGES -n.\Win32\Debug
-I"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\crtl\DE";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\rtl\DE";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\vcl";C:\XE5\include\boost_1_50\boost\tr1\tr1;C:\XE5\include\boost_1_50;
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include";"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\dinkumware";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\crtl";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\sdk";"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\rtl";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\vcl" -y -Q -k -r- -c -tM -tU -tW -C8 -o.\Win32\Debug\memory.obj -w-par -Od -v
-vi- -H=.\Win32\Debug\memory.pch -H memory.cpp
bcc32 Befehlszeile für "memoryfeld.cpp"
c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\bin\bcc32.exe -D_DEBUG -D_RTLDLL;USEPACKAGES -n.\Win32\Debug
-I"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\crtl\DE";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\rtl\DE";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\vcl";C:\XE5\include\boost_1_50\boost\tr1\tr1;C:\XE5\include\boost_1_50;
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include";"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\dinkumware";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\crtl";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\sdk";"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\rtl";
"c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\windows\vcl" -y -Q -k -r- -c -tM -tU -tW -C8 -o.\Win32\Debug\memoryfeld.obj -w-par -Od
-v -vi- -H=.\Win32\Debug\memory.pch -H memoryfeld.cpp
[bcc32 Fehler] memory(733): E2451 Undefiniertes Symbol 'is_empty'
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(732): E2401 Ungültige Vorlagenargumentliste
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(732): E2303 Typname erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(732): E2275 { erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(734): E2303 Typname erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(734): E2275 { erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(734): E2275 { erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(734): E2303 Typname erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(739): E2451 Undefiniertes Symbol 'is_empty'
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(738): E2401 Ungültige Vorlagenargumentliste
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(739): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(741): E2090 Qualifizierer '_Mybase' ist kein Name einer Klasse oder eines Namespace
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(741): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(753): E2293 ) erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(732): class unique_ptr<_Ty,_Dx>
[bcc32 Fehler] memory(898): E2451 Undefiniertes Symbol 'is_empty'
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(897): E2401 Ungültige Vorlagenargumentliste
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(897): E2303 Typname erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(897): E2275 { erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(899): E2303 Typname erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(899): E2275 { erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(904): E2451 Undefiniertes Symbol 'is_empty'
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(903): E2401 Ungültige Vorlagenargumentliste
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(904): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(906): E2090 Qualifizierer '_Mybase' ist kein Name einer Klasse oder eines Namespace
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(906): E2040 Deklaration nicht ordnungsgemäß abgeschlossen
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(917): E2293 ) erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(998): E2303 Typname erwartet
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memory(998): E2139 In Deklaration fehlt ;
Vollständiger Parser-Kontext
memoryfeld.cpp(8): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\algorithm
algorithm(20): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/algorithm
algorithm(5): #include C:\XE5\include\boost_1_50\boost\tr1\tr1\memory
memory(17): #include c:\_appwave{90f9309f-7004-4fdf-a2cf-b1ded14c5eba}xe5\include\../include/dinkumware/memory
memory(585): namespace std
memory(897): class unique_ptr<_Ty[],_Dx>
[bcc32 Fehler] memoryfeld.cpp(39): E2268 Aufruf der undefinierten Funktion 'random_shuffle'
Vollständiger Parser-Kontext
memoryfeld.cpp(14): Analyse: MemoryFeld::MemoryFeld()
Misslungen
Verstrichene Zeit: 00:00:06.2
-
Schwierig, weil der Fehler in einem Header der Standardbibliothek auftritt. Probier mal ein ganz simples
#include <algorithm> int main() { }
Ansonsten ist auffällig, dass der Header, in dem das Problem letztlich auftritt, genauso heißt wie deine Datei ("memory").
-
std::random_shuffle(Feld, Feld+42);
-
Letzteres mit std:: funktioniert leider auch nicht. Ich versuche mal den Code von Bashar.
-
So, das ganz simple hat auch nicht funktioniert. Total auffällig ist, dass, sobald ich <algorithm> hinzufüge, ich direkt 29 Fehler immer bekomme, und er springt dann in einen vordefinierten Quelltext und bleibt immer an folgender Zeile (und zwar an is empty) hängen:
// TEMPLATE CLASS unique_ptr SCALAR
template<class _Ty,
class _Dx = default_delete<_Ty> >
class unique_ptr
: public _Unique_ptr_base<_Ty, _Dx,
is_empty<_Dx>::value
|| is_same<default_delete<_Ty>, _Dx>::value>Ich verstehe nur nicht, dass es im Borland C++ Builder sowie auch im Turbo C++ immer geklappt hat, und nur in diesem XE5 solche Probleme macht. Wie gesagt, lasse ich random_shuffle ganz raus, läuft das Spiel einwandfrei, nur halt leider liegen die Paare nebeneinander.
-
Ich habe jetzt noch einige Dinge durchgespielt, kein Erfolg. Gro0es Fragezeichen im Kopf. Ich habe mal den Quelltext der kompletten memoryfeld.cpp kopiert, vielleicht könnt ihr da ja noch irgendwas finden. Also ohne random_shuffle, so wie jetzt im Code funktioniert es, soll aber so nicht sein.
//--------------------------------------------------------------------------- #pragma hdrstop #include "memoryfeld.h" #include "hauptformular.h" MemoryFeld::MemoryFeld() { int bild=0; int Feld[42]; OffeneKarten=0; player=0; Paare[0]=0; Paare[1]=0; //Inititalisere Aufgedeckt mit -1 for (int i=0; i<21; i++) for (int j=0; j<2; j++) { Aufgedeckt[i] [j].x=-1; Aufgedeckt[i] [j].y=-1; } //Belegen von Feld for (int i=0; i<42; i++) { Feld[i]=bild; if (((i+1) % 2 == 0)) bild++; } //Mischen von Feld randomize(); //Kopieren aus Feld in InitFeld for (int i=0; i<7; i++) for (int j=0; j<6; j++) { InitFeld[i][j]=Feld[j*7+i]; SpielFeld[i][j]=22; } } void MemoryFeld::KarteOeffnen(int x, int y) { int a=0; SpielFeld[x][y]=InitFeld[x][y]; OffeneKartenPos[OffeneKarten].x=x; OffeneKartenPos[OffeneKarten].y=y; if (Aufgedeckt[SpielFeld[x][y]][0].x!=-1 && !(Aufgedeckt[SpielFeld[x][y]][0].x==x && Aufgedeckt[SpielFeld[x][y]][0].y==y)) a=1; Aufgedeckt[SpielFeld[x][y]][a].x=x; Aufgedeckt[SpielFeld[x][y]][a].y=y; OffeneKarten++; } void MemoryFeld::SchliesseKarten() { bool treffer=0; if (InitFeld[OffeneKartenPos[0].x] [OffeneKartenPos[0].y]==InitFeld[OffeneKartenPos[1].x] [OffeneKartenPos[1].y]) { SpielFeld[OffeneKartenPos[0].x] [OffeneKartenPos[0].y]=21; SpielFeld[OffeneKartenPos[1].x] [OffeneKartenPos[1].y]=21; for (int i=0; i<2; i++) { Aufgedeckt[InitFeld[OffeneKartenPos[i].x][OffeneKartenPos[i].y]][i].x=-1; } Paare[player]++; treffer=1; } else { SpielFeld[OffeneKartenPos[0].x] [OffeneKartenPos[0].y]=22; SpielFeld[OffeneKartenPos[1].x] [OffeneKartenPos[1].y]=22; } OffeneKarten=0; if ( (Paare[0]+Paare[1])!=21 ){ if ( (player==0 && treffer==0) || (player==1 && treffer==1) ) { player=1; ComputerZug(); } } if (Paare[0] < 10 && Paare[0] + Paare[1] == 21) { Form1->Label6->Caption=("Leider verloren! Der Computer hat gewonnen!"); }else if (Paare[1] < 10 && Paare[1] + Paare[0] == 21) { Form1->Label5->Caption=("Herzlichen Glückwunsch! Du hast gewonnen!"); } } void MemoryFeld::ComputerZug() { int x1,y1,x2,y2, found=0; randomize(); for (int i=0; i<21; i++) { if (Aufgedeckt[i][0].x!=-1 && Aufgedeckt[i][1].x!=-1) { x1=Aufgedeckt[i][0].x; y1=Aufgedeckt[i][0].y; x2=Aufgedeckt[i][1].x; y2=Aufgedeckt[i][1].y; found=1; } } if (found==1) KarteOeffnen(x2,y2); else { do { x1=random(7); y1=random(6); } while (SpielFeld[x1][y1]!=22); if (Aufgedeckt[InitFeld[x1][y1]][0].x!=-1 && !(Aufgedeckt[InitFeld[x1][y1]][0].x==x1 && Aufgedeckt[InitFeld[x1][y1]][0].y==y1) ) { KarteOeffnen(Aufgedeckt[InitFeld[x1][y1]][0].x,Aufgedeckt[InitFeld[x1][y1]][0].y); } else { do { x2=random(7); y2=random(6); } while (SpielFeld[x2][y2]!=22 || (x1==x2 && y1==y2)); KarteOeffnen(x2,y2); } } KarteOeffnen(x1,y1); Form1->DrawGrid1->Repaint(); Form1->Timer1->Enabled=1; } //--------------------------------------------------------------------------- #pragma package(smart_init)
-
Hast Du das alte Projekt konvertiert?
Wenn ja dann versuche mal ein neues Projekt anzulegen und dort Deine Dateien hinzuzufügen.
-
Nein, ich habe nicht das alte Projekt genommen. Ich habe das komplette Memory-Spiel neu programmiert, weil ich diesmal ein größeres Spielfeld genommen habe und auch größere Bildkarten. Ich könnte echt verzweifeln. Ich dachte, ich schaffe es bis Donnerstag, hat ja auch super am Wochenende geklappt, mich hinzusetzen, aber diese Fehlermeldung raubt mir den Verstand. Ich hab mich schon tod gegoogelt, aber komme zu keiner Lösung
-
Ich habe gesehen, dass du eine
memory.cpp
hast. Du hast nicht zufälligerweise auch einememory.h
, die sich mit dermemory.h
aus der C-Runtime beißt?
-
Ja, ich habe eine memory.cpp...das ist richtig...auch demzufolge eine memory.h, das macht das Programm dann automatisch. Vielleicht wäre es eine Option, wenn ich den Dateinamen ändere....sobald ich nachher wieder am Rechner bin, werde ich das mal ausprobieren.
Also meinst Du, ich sollte die memory.cpp auch unter einem anderen Dateinamen abspeichern und es dann nochmal versuchen?Danke, dass ihr mir helfen wollt. Ich bin mit meinem Latein nämlich tatsächlich mal am Ende.
-
Man kann solche Algorithmen im Notfall auch selbst programmieren. In etwa so (keine Zeit es hübsch zu machen, die Benutzung von rand ist so nicht wirklich toll):
template<typename Iter> void random_shuffle(Iter begin, Iter end) { for (Iter shuffled = begin; shuffled != end; ++shuffled) { int pick = rand() % (end - shuffled); swap(*shuffled, *(shuffled + pick)); } }
(benötigt Random-Access-Iteratoren)
-
Ja,die Idee, das selbst zu programmieren hatte ich auch schon. Ich wusste nur nicht genau, wie ich es anstellen soll. Ich sehe aber schon, dass Du ganz anders programmierst
ich glaube, ich habe das etwas anders gelernt, so dass ich gerade Probleme beim Lesen Deines Codes habe. Aber ich versuche jetzt mal etwas. Wahrscheinlich ist die Lösung wieder viel zu einfach, als dass ich darauf komme.
-
Hallo
hast du die Dateien schon einen neuen
Namen gegeben ?Mfg
Klaus
-
Ich versuche gerade, den algorithm selbst zu programmieren... mir ist aufgefallen, dass dieser Compiler, auch, wenn ich z. B. die Anwendung hauptformular.cpp nenne und das Projekt memory, er automatisch noch eine Headerdatei anlegt, die dem Grunde nach ohne Quelltext dann da steht. Oh mann.....wenn ich das mit dem Alorithmen jetzt nicht hinbekomme, versuche ich die Dateien umzubenennen.
-
Also jetzt bin ich total verwirrt.... an Klaus: ich habe eine h-datei aus dem projekt entfernt, weil mir das komisch vorkam und habe das komplette Projekt nochmal compiliert, ohne es auszuführen. Da kam schonmal keine Fehlermeldung und war ein Juhuu-Erlebnis. random_shuffle (Feld, Feld+42) steht drin und im Header sogar die #include <algorithm>.
Ich habe dann freudestrahlend das Programm ausgeführt und leider festgestellt, wenn ich die Karten aufdecke, weiterhin alle Paare nebeneinander liegen. Irgendetwas ist da nicht in Ordnung.....
-
Ich könnte gerade meinen imac samt Tastatur aus dem Fenster werfen. Ich weiß nicht, was ich jetzt verbockt habe, aber das Spielfeld ist weg.
Ich werde mich dransetzen und ganz von vorne beginnen. Ganz von vorne....und ein neues Projekt anlegen. Dann bin ich mal gespannt...