System::String::Format Problem
-
Hey,
vorweg: ich nutze Managed C++ Code in meinem Programm.
Jetzt habe ich folgendes Problem:
Beim Kompilieren von folgendem Code:
throw __gc new Exception(System::String::Format("a = {0} & b = {1} found!", TokenA->getText(), TokenB->getText()));
erhalte ich diese Fehlermeldung:
"'System::String::Format': Durch keine der 5 Überladungen kann Parameter 3 vom Typ 'int' konvertiert werden"
Was mache ich falsch? Wie muss es richtig programmiert werden?
Danke schonmal!Gruß
-
1. Falsches Forum: Du hast doch neulich schon im korrekten Forum gepostet, so schwer?
2. Was ist der Rückgabetype von getText()?Edit:
Und guck doch mal bei MSDN vorbei:
http://msdn.microsoft.com/en-us/library/aa331875(VS.71).aspx
-
1. Sorry, war mir nicht sicher, obs ins CLI/C++ Forum gehört oder hier rein.
2. Der Rückgabe Wert ist System::String*
-
simhi88 schrieb:
1. Sorry, war mir nicht sicher, obs ins CLI/C++ Forum gehört oder hier rein.
Hier gehören Fragen zu Ansi C++, nicht irgendwelchen MS-Ablegern hinein (Spätestens wenn dort Dinge wie GC und .Net-Namensräume auftauchen, sollte dies klar sein).
simhi88 schrieb:
2. Der Rückgabe Wert ist System::String*
Für mich (wobei ich mich hier nur grundlegend auskenne) sieht dies weniger nach Managed C++, sondern eher nach C++/CLI (dem Nachfolger ab VS2005) aus. Wenn dem so wäre: Müsste dann nicht der Rückgabewert System::String^ sein?
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
-
Lösung:
throw __gc new Exception(System::String::Format("a = {0} & b = {1} found!", TokenA->getText(), __box(TokenB->getPos())));
Ein kleines anderes Problem.. Unter CLI ist z.B. folgendes möglich:
clInfo = lstInfos[lstInfos->Keys[iIndex]];
Hat jemand vielleicht eine Idee wie ich dies unter Managed C++ programmieren könnte? Die Benutzung der eckigen Klammern ist zum Einen allgemein dort nicht möglich und zum Anderen auch nicht hinter "Keys" verwendbar.
Gibt es eine andere Möglichkeit?
-
Hier mal ein Bsp.
__gc class Token { public: Token(System::String* value) : _value(value) { } System::String* getText() { return _value; } private: System::String* _value; }; int main() { Token* tokenA = __gc new Token(S"token A"); Token* tokenB = __gc new Token(S"token B"); System::String* str = System::String::Format(S"Token A is \'{0}\', token B is \'{1}\'", tokenA->getText(), tokenB->getText()); System::Console::WriteLine(str); }
Edit:
Warum zur Hö*** zeigst Du nicht den Code, der den Fehler verursacht? Immer dasselbe!
-
Danke theta.
Dennoch weiß ich nicht, was du meinst mit "immer dasselbe"?
Ich zeige doch den Code, der den Fehler verursacht.
-
Funktioniert nicht:
throw __gc new Exception(System::String::Format("a = {0} & b = {1} found!", TokenA->getText(), TokenB->getText()));
Funktioniert:
throw __gc new Exception(System::String::Format("a = {0} & b = {1} found!", TokenA->getText(), __box(TokenB->getPos())));
Den Fehler mit dem __box(..) war sowiso schon in einen deiner letzen Threads zur Sprache gekommen.
-
Ja, ich war mir nur nicht sicher ob und wenn ja, wo ich das mit dem __box(..) anwenden muss/soll.
Naja, egal.