wxOTL



  • Hallo

    Kann mir einer von euch helfen?
    Versuche die Sample von wxOTL unter Windows XP mit VC++ 9 zum laufen zubekommen.
    http://users.skynet.be/fb336405/wxOTL/download.html

    bei dem Sample \wxOTL-0.4\contrib\samples\otl\dbgrid\ora\dbgrid.cpp

    erhalte ich folgende
    fehlermeldung vom Compiler.
    wxotl-0.4\contrib\include\wx\otl\otlv4.h(24720) : error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'char *' akzeptiert (oder keine geeignete Konvertierung möglich)

    Es sind #defined im spiel und muß ich passen.

    Gruß Califax



  • Hallo

    kann mir keiner helfen?

    In zwischen hab ich weiter versucht das problem zu lösen, aber ohne großen erfolg.

    noch ein paar infos.

    Code aus der otlv4.h datei.

    #if defined(USER_DEFINED_STRING_CLASS)
    #define OTL_STRING_CONTAINER USER_DEFINED_STRING_CLASS
    #define STD_NAMESPACE_PREFIX
    #else
    #error USER_DEFINED_STRING_CLASS macro needs to be defined before including otlv4.h
    #endif
    

    hier ein codeausschnitt wo ich die Fehlermeldung(Zeile 22) erhalte.

    #if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
     OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(OTL_STRING_CONTAINER& s)
       OTL_THROWS_OTL_EXCEPTION
     {
      check_if_executed();
      if(eof_intern())return *this;
      get_next();
      switch(sl[cur_col].ftype){
      case otl_var_char:
        if(!eof_intern()){
    #if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
          if((*this).is_null()){
            OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
          }else
    #elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
          if((*this).is_null())
            s=OTL_DEFAULT_STRING_NULL_TO_VAL;
          else
    #endif
    #if defined(OTL_ACE)
            s.set(OTL_RCAST(char*,sl[cur_col].val(cur_row)),1);
    #else
            s=OTL_RCAST(char*,sl[cur_col].val(cur_row));
    #endif
          look_ahead();
        }
    

    So wie ich es sehe wird mit Präprozessor-Direktiven gearbeitet.

    Code aus der otl_ora.h datei.

    #ifndef _OTL_ORA_H_
    #define _OTL_ORA_H_
    
    //#define OTL_ORA9I
    #define OTL_ORA10G_R2
    //#define OTL_ANSI_CPP
    #define OTL_USER_DEFINED_STRING_CLASS_ON
    #define USER_DEFINED_STRING_CLASS wxString
    
    #define OTL_EXPLICIT_NAMESPACES
    #define OTL_EXCEPTION_DERIVED_FROM wxOTLException 
    #define OTL_EXCEPTION_HAS_MEMBERS wxString GetStatement(){wxString statement = this->stm_text; return statement;}; wxString GetVarInfo() {wxString varinfo = this->var_info ; return varinfo ;} ; wxString GetMessage() {wxString msg = this->msg; return msg;};
    
    #include "wx/string.h"
    
    #include "wx/otl/wxOTLException.h"
    #include "wx/otl/otlv4.h"
    
    #endif	/* _OTL_ORA_H_ */
    

    So wie ich es verstehe wird die Zeile 22 vom compiler so gelesen.

    s=OTL_RCAST(char*,sl[cur_col].val(cur_row));
    
    wxString=OTL_RCAST(char*,sl[cur_col].val(cur_row));
    

    und damit meldet der compiler den oben beschriebenen fehler, weil man "char*" nicht einfach so an wxString übergeben kann. wie kann ich das Problem lösen?

    Kann mir einer von euch profis helfen.

    Gruß califax


  • Mod

    Nein, da kann ich dir nicht helfen, hab mit wxOTL keine Erfahrung.
    Funktionierts denn mit älteren VS Versionen?

    Oder du verwendest evtl. eine Andere DB Schnittstelle, z.b. Databaselayer.



  • Hallo

    Hab die wxotl Sample unter Visual Studio 2008 zum laufen bekommen. 🙂

    wenn intresse besteht kann sich ja bei mir melden.

    Gruß Califax



  • Immer mit wchar_t kompilieren !


Log in to reply