Builder 2007 und try/catch
-
Hallo,
habe gerade mit Spannung den CodeGear Builder2007 installiert und mein erstes (kleineres Projekt) eingeladen/konvertiert (vom BCB6 her).
Leider fängt es schlecht an, denn er meckert nun immer alle try/catch an
try { ...Code.... } catch(Exception& e) { MessageBox(NULL, e.Message.c_str(), "TForm1::FormShow()", MB_OK); } // Fehler anzeigen
Funktionierte unter BCb6 einwandfrei; nun meckert er immer:
[BCC32 Fehler] Main_Form1.cpp(309): E2451 Undefiniertes Symbol 'e'
Vollständiger Parser-Kontext
Main_Form1.cpp(201): Analyse von: void _fastcall TForm1::FormShow(TObjectund zwar an der Stelle , e.Message.c_str()
Was läuft da jetzt unter 2007 anders?
Danke udn Gruss, Stefan
-
SysUtils.hpp inkludiert? Auch wenn das in Formularen eigentlich eh immer zwingend dabei sein sollte.
Sind alle Fehlermeldungen, die vor der Meldung zu dem catch kommen, weg? Der Compiler zeigt sonst u.U. Fehler an, die garnicht da sind.
Ist MessageBox bekannt? (#include <windows.h> oder Application->MessageBox(...)
Das könnte an anderen Builder-Einstellungen zu Precompiled Headers liegen. Vielleicht war <windows.h> vorher implizit eingebunden.#define catch gemacht?
Oder sind irgendwelche Namen definiert, die sich mit den dort vorhandenen beißen?
-
..für Deine Tipps. "Fehler" waren in der Tat vor der Catch-Schleife
(banale INT-Zuweisungen bei einem TColor Typ, was unter BCB6 absolut kein
Problem war). Nachdem ich die alle beseitigt hatte, waren auch die
angeblichen e. Fehler in der catch-Anweisungen kein Problem mehr (an der
Stelle ein deutlich ironisches Danke an die Borlandentwickler für die immer
noch nicht gelungene eindeutige Fehleridentifizierungen bzw. irreführende
Fehlermeldungen, das bekommen andere Programmiersprachen immer noch 1000mal
besser hin!!!! z.B. GB32)Richtig schön war anschliessend dann noch jedesmal ein Access violation mit
Abbruch Programmstart. Hier musste ich in den Linkeroptionen noch das
"Dynamische RTL" aktivieren, jetzt läuft es endlich (bin mal gespannt, wann
die Entwickler endlich kapieren, daß nicht jeder Programmierer Lust hat, erst
endlos in den teilweise kryptischen Optionen rumzusuchen).Güsse Stefan
-
Stefan7124 schrieb:
(banale INT-Zuweisungen bei einem TColor Typ, was unter BCB6 absolut kein
Problem war).Das war beim BCB6 kein Problem, aber eben auch nicht standardkonform. Der BCB2007 macht das besser.
-
@Braunstein: Damit kann ich ja auch leben und ist ja auch vernünftig.
Ich bemängel ja in erster Linie die verwirrenden Fehlermeldungen.Übrigens habe ich jetzt den CodeGuard deaktiviert und die Meldungen sind
alle weg und das Programm läuft. Auch nicht gerade toll. Bei einer Violation
Meldung nützen nämlich die Steps mit F7 usw. absolut garnichts, soweit komme
ich dann nämlich nicht. Und die Maschinensprachenbefehle angezeigt zu bekommen,
dürfte den wenigsten was bringen (meine Zeiten mit diesen Befehlen sind lange
vorbeiGibt es hier eigentlich oder woanders ein Thema, was beim Umsteigen auf
den 2007er generell zu beachten ist? Scheint ja etliche Stolperfallen zu
geben, den in einer Unterfunktion habe ich die nächsten Violation-Probleme
und auf einmal nimmt er mit in einer TGridDrawState als Übergabeparameter
nicht mehr anGruss Stefan
-
Stefan7124 schrieb:
@Braunstein: Damit kann ich ja auch leben und ist ja auch vernünftig.
Ich bemängel ja in erster Linie die verwirrenden Fehlermeldungen.Verwirrenden Fehlermeldungen von Folgefehlern?
Was erwartest du, geh Fehler immer in der Reihenfolge durch in der sie Ausgegeben werden. C++ ist eine komplexe Sprache, so das es sein kann das einige Meldung nur aufgrund eines anderen Fehlers kommen.