Umstieg von BCB6 auf VC2005Express scheitert
-
Hi,
der Umstieg fäält mir nicht so leicht wie gedacht. Der Compiler gibt 27 Fehler aus und ich weiß nicht warum...
// Jerrysoft - Numerologoa.cpp: Hauptprojektdatei. #include "stdafx.h" #include "Form1.h" using namespace JerrysoftNumerologoa; [STAThreadAttribute] int main(array<System::String ^> ^args) { // Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); // Hauptfenster erstellen und ausführen Application::Run(gcnew Form1()); return 0; } //Quersumme------------------------------------------------------------------ int quersumme(int z) { int s=0; do { s+=z%10; z/=10; } while ((z>0) || (z==11)); return s; } //String konvertieren-------------------------------------------------------- AnsiString konvertAnsiString(AnsiString n, AnsiString vn) //initialisiere Name und Vorname { AnsiString a; a = n+vn; //n und vn in einen String a = a.UpperCase(); //in Großbuchstaben umwandeln AnsiString t; //Entferne alle Zeichen, die keine for (int i=1; i<=a.Length(); ++i) //Buchstaben sind und wandle Vokale um { if (a[i]=='Ä') a[i]='AE'; else if (a[i]=='Ö') a[i]='OE'; else if (a[i]=='Ü') a[i]='UE'; if (('A'<=a[i]) && (a[i]<= 'Z')) t+=a[i]; } return t; } //Vokalsortierung------------------------------------------------------------ AnsiString vokalAnsiString(AnsiString t) { AnsiString v; //Vokalsortierung for (int i=1; i<=t.Length(); ++i) { if (t[i]=='A') v+=t[i]; if (t[i]=='E') v+=t[i]; if (t[i]=='I') v+=t[i]; if (t[i]=='O') v+=t[i]; if (t[i]=='U') v+=t[i]; } return v; } //String in Zahl------------------------------------------------------------ int AnsiStringinzahl(AnsiString w) { // ABCDEFGHIJKLMNOPQRSTUVWXYZ AnsiString code="12345678912345678912345678"; AnsiString x; //Zahlennummer erstellen for (int i=1; i<=w.Length(); ++i) { int q=w[i]; x+=code[q]; } int z = StrToInt(x); return z; } //Geburtstagkonverter-------------------------------------------------------- AnsiString gebdate(AnsiString a,AnsiString b, AnsiString c) { a = StrToInt(a); b = StrToInt(b); c = StrToInt(c); AnsiString x; x = a+b+c; return x; }
das oben ist ein Auszug aus dem Algorhythmus.
------ Erstellen gestartet: Projekt: Jerrysoft - Numerologoa, Konfiguration: Debug Win32 ------ Kompilieren... Jerrysoft - Numerologoa.cpp .\Jerrysoft - Numerologoa.cpp(35) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'konvertAnsiString' .\Jerrysoft - Numerologoa.cpp(35) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. .\Jerrysoft - Numerologoa.cpp(35) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'n' .\Jerrysoft - Numerologoa.cpp(35) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. .\Jerrysoft - Numerologoa.cpp(35) : error C2059: Syntaxfehler: ')' .\Jerrysoft - Numerologoa.cpp(36) : error C2143: Syntaxfehler: Es fehlt ';' vor '{' .\Jerrysoft - Numerologoa.cpp(36) : error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil? .\Jerrysoft - Numerologoa.cpp(54) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'vokalAnsiString' .\Jerrysoft - Numerologoa.cpp(54) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. .\Jerrysoft - Numerologoa.cpp(54) : error C2086: 'int AnsiString': Neudefinition .\Jerrysoft - Numerologoa.cpp(35): Siehe Deklaration von 'AnsiString' .\Jerrysoft - Numerologoa.cpp(54) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 't' .\Jerrysoft - Numerologoa.cpp(54) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. .\Jerrysoft - Numerologoa.cpp(54) : error C2059: Syntaxfehler: ')' .\Jerrysoft - Numerologoa.cpp(55) : error C2143: Syntaxfehler: Es fehlt ';' vor '{' .\Jerrysoft - Numerologoa.cpp(55) : error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil? .\Jerrysoft - Numerologoa.cpp(70) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'w' .\Jerrysoft - Numerologoa.cpp(70) : error C2059: Syntaxfehler: ')' .\Jerrysoft - Numerologoa.cpp(71) : error C2143: Syntaxfehler: Es fehlt ';' vor '{' .\Jerrysoft - Numerologoa.cpp(71) : error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil? .\Jerrysoft - Numerologoa.cpp(86) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'gebdate' .\Jerrysoft - Numerologoa.cpp(86) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. .\Jerrysoft - Numerologoa.cpp(86) : error C2086: 'int AnsiString': Neudefinition .\Jerrysoft - Numerologoa.cpp(35): Siehe Deklaration von 'AnsiString' .\Jerrysoft - Numerologoa.cpp(86) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'a' .\Jerrysoft - Numerologoa.cpp(86) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. .\Jerrysoft - Numerologoa.cpp(86) : error C2059: Syntaxfehler: ')' .\Jerrysoft - Numerologoa.cpp(87) : error C2143: Syntaxfehler: Es fehlt ';' vor '{' .\Jerrysoft - Numerologoa.cpp(87) : error C2447: '{': Funktionskopf fehlt - Parameterliste im alten Stil?
und das die Fehler beim Compen. Kann mir jemand sagen, was ich falsch mache.. die Hilfe lässt mich ratlos stehen..
-
Erstmal sieht die Zeile "[STAThreadAttribute]" nicht so aus, als ob in einen C++ Quelltext gehört. Ansonsten könnte es ein Problem darstellen, daß Visual Studio keinen AnsiString kennt (ist eine Borland-eigene String-Klasse) - d.h. du mußt alle AnsiString-Vorkommen in deinem Quelltext ersetzen durch std::string (STL Stringklasse) oder CString (Microsoft String-Klasse).
PS: Und natürlich mußt du auch die Methodenbezeichnungen und -parameter entsprechend anpassen.
-
thx - das mit den Methoden is klar..
was ist aktueller string oder cstring?
das "[STAThreadAttribute]" war von MS so eingefügt worden.
wenn ich std::string benutze compt der noch mehr Fehler
-
CStoll schrieb:
Erstmal sieht die Zeile "[STAThreadAttribute]" nicht so aus, als ob in einen C++ Quelltext gehört.
Doch doch, das passt
Ist C++/CLI (also mit .Net)
Der Hauptfehler ist der nicht bekannte Typ wie du schon gesagt hast.
-
Talla schrieb:
CStoll schrieb:
Erstmal sieht die Zeile "[STAThreadAttribute]" nicht so aus, als ob in einen C++ Quelltext gehört.
Doch doch, das passt
Ist C++/CLI (also mit .Net)
OK, dann will ich nichts gesagt haben
@b43r:
std::string dürfte auf jeden Fall kompatibler mit anderen Compilern sein - allerdings mußt du dazu den Header <string> mit includen. (zur Kombination STL - CLI weiß ich leider nichts)
CString ist dagegen eine Eigenentwicklung von Microsoft - d.h. du müsstest es beim nächsten Compiler-Umstieg wieder gegen etwas anderes austauschen.
-
In der Express Edition wird er aber kein CString nutzen können, da CString im Namespace Atl drin ist. Und die ATL gibts in der Express Edition nicht.
Wenn, dann sollte er vielleicht eher Strings aus .NET oder STL bzw. STL.NET benutzen.
-
ich benutze die plattform sdk .. ich mach nichts mit .Net .. rein c++
-
Was du da oben hast ist aber ein .Net Projekt!
-
ich hab saber genau so gamecht, wie microsoft das gesagt hat
siehe hier: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
-
Kann ja sein das du es richtig eingebunden hast. Du hast dann aber beim Erstellen den falschen Projekttypen genommen.
-
Artchi schrieb:
In der Express Edition wird er aber kein CString nutzen können, da CString im Namespace Atl drin ist. Und die ATL gibts in der Express Edition nicht.
ATL kann (indirekt) verwendet werden:
http://www.codeproject.com/wtl/WTLExpress.asp