StrToInt ist kaputt gegangen
-
Hallo,
habe einen Programmteil der bisher funktionierte. Jetzt habe ich mein Programm mit einem COM Server ausgestattet und nun macht eine Programmzeile Probleme (komplett unabhängig vom neuen Code, ganz andere Stelle).AnsiString x; ... int i = StrToInt(x);
Hier sagt er plötzlich das er einen char* erwartet (für x) statt AnsiString. Also nimmt er die Implementierung für den Befehl "StrToInt" irgendwo anders her. Wie kann ich dem Hund nun beibringen, das er das StrToInt aus "Sysutils" nehmen soll?
Habe schon probiert direkt vor dem Befehl ein "using namespace Sysutils" einzubauen, brachte aber auch nix.
Jörn
-
Hallo
Wenn dann so
Sysutils::StrToInt(x);
bis bald
akari
-
oder so:
x.ToInt(); bzw. x.ToIntDef(int);
grüssle
-
akari schrieb:
Hallo
Wenn dann so
Sysutils::StrToInt(x);
bis bald
akariDen Gedanken hatte ich auch, aber dann kommt die Meldung "E2316 'StrToIntA' ist keine Element von Sysutils.....
Das ToInt() geht ist mir bewusst, nur betrifft es viele Stellen im Programm die bei einem Umbau explizit getestet werden müssten. Und das will ich vermeiden. Lieber wäre mir eine Lösung wo es genauso funktioniert wie vorher...
-
Hallo
Wird von meinem BCB 5 fehlerfrei kompiliert und ausgeführt :
AnsiString x = "1"; int y = Sysutils::StrToInt(x);
bis bald
akari
-
Das ist ja mein Problem. Vor dem Einbau des COM Servers ging es ja auch....
-
Hallo
Du hast nur geschrieben das du es mit using probiert hast. Die explizite Angabe des namespaces vor jedem StrToInt ist genau das Gegenteil vom using!
Mir fällt für diesen Compiler-Fehler kein Grund ein. Wird denn wenigstens das angenommen? :
StrToInt(x.c_str());
Und nur zur Sicherheit : Hast du mal das ganze Projekt neu übersetzten lassen (Menü Projekte/Alle Projekte erzeugen)?
bis bald
akari
-
Neu übersetzt ist alle. Die Lösung mit c_str() funktioniert. Allerdings ist so ja nur die Auswirkung beseitigt, nicht die Ursache
Nur Interessehalber....
-
Die Fehlermeldung bzgl. 'StrToIntA' deutet auf eines dieser wunderbaren Makros hin (so wie bei Canvas.DrawTextA(...) !!!)
#ifdef _UNICODE #define StrToInt StrToIntW #else #define StrToInt StrToIntA #endif
Daher mal
#undef StrToInt
probieren.