AnsiString = AnsiString funktioniert nicht!?
-
Erläuterungen zu extern und globale Variablen.
http://www2.informatik.uni-halle.de/lehre/c/c_globv.html
http://www.willemer.de/informatik/cpp/geltungvar.htm
-
Ich glaube ich steh gerade auf der Leitung
In meinem Buch steht:
The extern specifier tells the compiler that the following variable types and names have been declared elsewhere. In other words, extern lets the compiler know what the types and names are for these global variables without actually creating storage for them again. When the two modules are linked, all references to the external variables are resolved.Braunstein schrieb:
Du machst es ja auch genau verkehrt rum. Das
extern const AnsiString triangle;gehört in den Header und die Definition in eine cpp.
Ich habe nun auch versucht die extern-Deklarationen in die Unit2.h zu packen mit demselben Ergebnis. Die Definition meiner AnsiStrings findet in der const.h statt, sollte ich das nun in eine cpp umwandeln? -Wie gesagt, ich steh gerade auf der Leitung
-
Nein. extern sagt dem Compiler, dass eine Variable dieses Namens existiert und irgendwo auch definiert wird. Damit die Variable in deinem Programm bekannt gemacht werden kann, packst diese extern Deklaration in einen Header.
Die dazu gehörige Definition packst du in irgendeine cpp damit der Linker sie auch findet.
-
Hallo
Also nochmal...
const.h:
#ifndef CONST_H #ifndef CONST_H #include <vcl.h> // Muß mit rein extern const AnsiString triangle; #endifconst.cpp:
#include "const.h" const AnsiString triangle = "images\\triangle.bmp";Unit2.h
#include "const.h" // ... hier triangle benutzenbis bald
akari/Edit : Code korrigiert
-
Diese sch*** Leitungen immer

Danke für eure Erklärungen, habe sie genauestens befolgt, bekomme nun aber dutzende Compiler-Fehler, an welchen ich schon seit einer halben Stunde ratlos davor sitze:
z.B.[C++ Fehler] const.h(5): E2141 Fehler in der Deklarationssyntax Das zeigt er bei dieser Zeile an: extern const AnsiString white; //bzw auch bei triangle usw. Oder dieser hier: [C++ Fehler] const.h(11): E2238 Bezeichner 'AnsiString' mehrfach deklariert in diser Zeile hier extern AnsiString Symbol; //Symbol user 1Ich versteh einfach nicht was an dieser Deklaration falsch sein soll, definiert wird white in const.cpp wie oben schon von akari beschrieben:
const AnsiString white = "images\\white.bmp";Aber ich glaube ohne Quelltext wird es für euch schwer sein einen Fehler zu finden
, ansonsten hab ich jedoch nichts geändert!
-
Hallo
Wie mans auch macht...
Es fehlt noch der include für die VCL, damit der Compiler den Typ AnsiString kennt. Hab meinen Code korriert.bis bald
akari
-
Mein Gott!!!!! Hatte mal nen Compiler dem das alles egal war, der kannte aber natürlich keinen AnsiString. Sollte aber keine Ausrede sein!!!!!!
Damit ist mein (erstes BCB) Spiel jetzt vorläufig fertig und für die sehr gute Mithilfe an diesem Projekt möchte ich es dieser Community geben.
Besonderen Dank an akari und Braunstein *Danke*Hier wäre das vollständige Spiel, BCB6 [666KB]
http://rapidshare.com/files/88087685/ticitaci6.rar
Einfach auf Free-> Warten (ja leider) und fertigEinen mir bisher bekannten Fehler gibt es noch, ob ich diesen überhaupt umgehen will, weiß ich noch nicht, bedeutet nämlich ziemlich viel Aufwand
Wenn man den Bot auf schwer einstellt ist er nicht immer auf schwer eingestellt (klingt lustig) Behebung (zurzeit noch) einfach 2 mal auf Extras->Bot->Schwer klicken und dann Singleplayer startenDafür hat noch niemand den schwierigen Bot bis jetzt besiegt!
DANKE!!!!!!!!!!