HILFE! Haufen an Fehlern mit Exceptions!



  • Hallo, ich habe hier eine Menge an Fehlern:

    [BCC32 Fehler] Projekt.cpp(36): E2015 Mehrdeutigkeit zwischen 'Exception' und 'Sysutils::Exception'
    [BCC32 Fehler] Projekt.cpp(39): E2034 Konvertierung von 'Exception *' nach 'Sysutils::Exception *' nicht möglich
    [BCC32 Fehler] Projekt.cpp(39): E2342 Keine Übereinstimmung des Typs beim Parameter 'E' ('Sysutils::Exception *' erwartet, 'Exception *' erhalten)
    [BCC32 Fehler] Projekt.cpp(45): E2015 Mehrdeutigkeit zwischen 'Exception' und 'Sysutils::Exception'
    [BCC32 Fehler] Projekt.cpp(45): E2352 Instanz der abstrakten Klasse 'Exception' kann nicht erzeugt werden
    [BCC32 Fehler] Projekt.cpp(45): E2353 Klasse 'Exception' ist abstrakt, weil '__stdcall Exception::get_Application(_Application * 😉 = 0'
    [BCC32 Fehler] Projekt.cpp(45): E2285 Keine Übereinstimmung für 'Exception::Exception(const char *)' gefunden
    [BCC32 Fehler] Projekt.cpp(45): E2031 Typumwandlung von 'const char *' nach 'Exception' nicht zulässig
    [BCC32 Fehler] Projekt.cpp(47): E2015 Mehrdeutigkeit zwischen 'Exception' und 'Sysutils::Exception'
    [BCC32 Fehler] Projekt.cpp(49): E2034 Konvertierung von 'Exception *' nach 'Sysutils::Exception *' nicht möglich
    [BCC32 Fehler] Projekt.cpp(49): E2342 Keine Übereinstimmung des Typs beim Parameter 'E' ('Sysutils::Exception *' erwartet, 'Exception *' erhalten)

    Hier ist der Code:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    #include <tchar.h>
    //---------------------------------------------------------------------------
    //---------------------------------------------------------------------------
    WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
    {
    	try
    	{
    		Application->Initialize();
    		Application->MainFormOnTaskBar = true;
    		Application->Title = "Datenverwaltung";
    		Application->CreateForm(__classid(TMainForm), &MainForm);
    		Application->CreateForm(__classid(TDatenModul), &DatenModul);
    		Application->Run();
    	}
    	catch (Exception &exception)
    	{
    		Application->ShowException(&exception);
    	}
    	catch (...)
    	{
    		try
    		{
    			throw Exception("");
    		}
    		catch (Exception &exception)
    		{
    			Application->ShowException(&exception);
    		}
    	}
    	return 0;
    }
    //---------------------------------------------------------------------------
    


  • Zeig mal Projekt.cpp .



  • naja das war die projekt.cpp aber hier nochmal ganz:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    #include <tchar.h>
    //---------------------------------------------------------------------------
    USEFORM("BetPartNeuFrm.cpp", BetPartNeuForm);
    USEFORM("SasNeuFrm.cpp", SasNeuForm);
    USEFORM("AsBearbeitenFrm.cpp", AsBearbeitenForm);
    USEFORM("AuftragBearbeitenFrm.cpp", AuftragBearbeitenForm);
    USEFORM("LeistPosStammFrm.cpp", LeistPosStammForm);
    USEFORM("RechUebersichtFrm.cpp", RechUebersichtForm);
    USEFORM("AGStammFrm.cpp", AGStammForm);
    USEFORM("LoginFrm.cpp", LoginForm);
    USEFORM("AnwenderStammFrm.cpp", AnwenderStammForm);
    USEFORM("DatenModulFrm.cpp", DatenModul); /* TDataModule: File Type */
    USEFORM("RegStammFrm.cpp", RegStammForm);
    USEFORM("RechErstellenFrm.cpp", RechErstellenForm);
    USEFORM("AuftragNeuFrm.cpp", AuftragNeuForm);
    USEFORM("MainFrm.cpp", MainForm);
    USEFORM("SBStammFrm.cpp", SBStammForm);
    USEFORM("RasNeuFrm.cpp", RasNeuForm);
    USEFORM("LeistManFrm.cpp", LeistManForm);
    USEFORM("AsTerminFrm.cpp", AsTerminForm);
    //---------------------------------------------------------------------------
    WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
    {
    	try
    	{
    		Application->Initialize();
    		Application->MainFormOnTaskBar = true;
    		Application->Title = "Datenverwaltung";
    		Application->CreateForm(__classid(TMainForm), &MainForm);
    		Application->CreateForm(__classid(TDatenModul), &DatenModul);
    		Application->Run();
    	}
    	catch (Exception &exception)
    	{
    		Application->ShowException(&exception);
    	}
    	catch (...)
    	{
    		try
    		{
    			throw Exception("");
    		}
    		catch (Exception &exception)
    		{
    			Application->ShowException(&exception);
    		}
    	}
    	return 0;
    }
    //---------------------------------------------------------------------------
    


  • Es sieht so aus, als sei die Ursache des Fehlers ein gemeinsam für das Projekt generierter PCH (folglich wirst du C++Builder 2007 oder höher verwenden), der unter anderem den Header einer Typbibliothek enthält, die ihrerseits eine Klasse namens Exception definiert. Der Konflikt entsteht deshalb:

    #if !defined(NO_IMPLICIT_NAMESPACE_USE)
    using  namespace Access_2k;
    #endif
    

    Das steht aus nicht bekanntem Grunde in allen automatisch generierten Typbibliotheks-Headerdateien, und die offensichtliche Lösung ist, in den Projektoptionen NO_IMPLICIT_NAMESPACE_USE zu definieren und deinen Code zur expliziten Verwendung des Namespaces anzupassen (oder alternativ in der Datei, die den TLB-Header einbindet, explizit using namespace whatever zu verwenden).



  • zufällig benutze ich wirklich eine neuere ausgabe! nämlich den 2009er.
    es ist auch dieser code in einer header-datei:

    #if !defined(NO_IMPLICIT_NAMESPACE_USE)
    using  namespace Outlook_xp;
    #endif
    

    was genau muss ich hier jetzt ändern? bzw. in den projektoptionen??



  • Hallo, also irgendwie bekomm ich das nich hin 😞

    ich hatte jetzt mal ausprobiert "using namespace whatever" hinzuschreiben, aber dann sagt er mir, er will einen Namespace haben.

    Ich weiß ni ht, was ich da machen soll!



  • Hi,

    unabhängig davon lies dir bitte diesen Artikel von Embarcadero durch:

    Release-Hinweise für CodeGear Delphi und C++Builder 2009

    Kurzes Zitat:

    embarcadero schrieb:

    Bekannte Probleme
    ...
    IDE-Unterstützung für Unicode-Zeichen, die nicht im Basic Multilingual Plane enthalten sind
    Dynamische Link-RTL kann beim dynamischen Laden einer DLL nicht verwendet werden
    NO_STRICT #define muss bei der GdiPlus-Bibliothek ausgeschaltet sein
    NO_STRICT #define sollte mit der VCL ausgeschaltet sein
    ...

    Schau mal in deine Projektoptionen, was da steht.

    mfg
    kpeter



  • Also ich habe mir den Artikel abgeschaut, aber jetzt nicht unbedingt was wirklich nützliches finden können, was mir da weiterhilft...


Anmelden zum Antworten