Fehlermeldungen: Versuch mit IBPP und Firebird..ich krieg es einfach nicht



  • BOOL CFDBRecord::GetData(USHORT Column, LPVOID pBuffer, ULONG pBufLen, LONG * dataLen, int Type)
    {
    	int nType;
    	try
    	{
    		// Nun müssen wir herausfinden welchen Datentyp die Column hat	
    		nType = stm->m_hStmt->ColumnType(Column);
    		switch(nType)
    		{
    			case IBPP::sdArray:
    				IBPP::sdArray tmpVar = new IBPP::ArrayFactory(&stm->mdbc->db,&stm->tr);
    				break;
    			case IBPP::sdBlob:
    				IBPP::sdBlob tmpVar = new IBPP::BlobFactory(&stm->mdbc->db,&stm->tr);
    				break;
    			case IBPP::sdDate:
    				IBPP::sdDate tmpVar = new IBPP::Date();
    				break;
    			case IBPP::sdDouble:
    				IBPP::sdDouble tmpVar;
    				break;
    			case IBPP::sdInteger:
    				IBPP::sdInteger tmpVar;
    				break;
    			case IBPP::sdLargeint:
    				IBPP::sdLargeint tmpVar;
    				break;
    			case IBPP::sdSmallint:
    				IBPP::sdSmallint tmpVar;
    				break;
    			case IBPP::sdString:
    				IBPP::sdString tmpVar;
    				break;
    			case IBPP::sdTime:
    				IBPP::Time tmpVar = new IBPP::Time();
    				break;
    			case IBPP::sdTimestamp:
    				IBPP::Timestamp tmpVar = new IBPP::Timestamp();
    				break;
    			case IBPP::sdFloat:
    				IBPP::sdFloat tmpVar;
    				break;
    		}
    	}
    	catch(Exception &e)
    	{
    		stm->mdbc->m_ErrorStr.Format("%s",e.ErrorMessage());
    		return FALSE;
    	}
    	catch(...)
    	{
    		stm->mdbc->m_ErrorStr.Format("Unbekannter Fehler in CFDBRecord::GetData()");
    		return FALSE;
    	}	
    }
    

    und ich bekomme folgende Meldungen:

    ------ Build started: Project: FDBDatabase, Configuration: Debug Win32 ------
    Compiling...
    FDBRecord.cpp
    e:\projekte\fdbdatabase\fdbrecord.cpp(136) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(136) : error C2065: 'tmpVar' : undeclared identifier
    e:\projekte\fdbdatabase\fdbrecord.cpp(136) : error C2061: syntax error : identifier 'ArrayFactory'
    e:\projekte\fdbdatabase\fdbrecord.cpp(139) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(139) : error C2061: syntax error : identifier 'BlobFactory'
    e:\projekte\fdbdatabase\fdbrecord.cpp(142) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(145) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(148) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(151) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(154) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(157) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(160) : error C2440: 'initializing' : cannot convert from 'IBPP::Time *' to 'IBPP::Time'
    No constructor could take the source type, or constructor overload resolution was ambiguous
    e:\projekte\fdbdatabase\fdbrecord.cpp(162) : error C2360: initialization of 'tmpVar' is skipped by 'case' label
    e:\projekte\fdbdatabase\fdbrecord.cpp(160) : see declaration of 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(163) : error C2371: 'tmpVar' : redefinition; different basic types
    e:\projekte\fdbdatabase\fdbrecord.cpp(160) : see declaration of 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(163) : error C2440: 'initializing' : cannot convert from 'IBPP::Timestamp *' to 'IBPP::Timestamp'
    No constructor could take the source type, or constructor overload resolution was ambiguous
    e:\projekte\fdbdatabase\fdbrecord.cpp(165) : error C2360: initialization of 'tmpVar' is skipped by 'case' label
    e:\projekte\fdbdatabase\fdbrecord.cpp(163) : see declaration of 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(165) : error C2360: initialization of 'tmpVar' is skipped by 'case' label
    e:\projekte\fdbdatabase\fdbrecord.cpp(160) : see declaration of 'tmpVar'
    e:\projekte\fdbdatabase\fdbrecord.cpp(166) : error C2146: syntax error : missing ';' before identifier 'tmpVar'
    Build log was saved at "file://e:\Projekte\FDBDatabase\Debug\BuildLog.htm"
    FDBDatabase - 18 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

    Kann mir da jemand weiterhelfen?

    Danke!!!



  • Du solltest überall ein BLock um Deine Variablen-Deklaration in den case-sections machen:

    switch(nType)
    {
      case IBPP::sdArray:
      {
        IBPP::sdArray tmpVar = new IBPP::ArrayFactory(&stm->mdbc->db,&stm->tr);
      }
      break;
    

    PS: Aber warum deklariest Du was, was Du nie verwendest?



  • Danke schon mal, probier ich gleich mal.
    Verwendet wird je nach Fall.

    Ich kann nie wissen welcher Datentyp ankommt, also muß ich die deklarieren um diese verwenden zu können. Bei IBPP ist dieser Weg einfach sicher.

    Danke nochmal.



  • Hmmm.... leider immer noch die gleichen Fehler.
    Hier der Code:

    switch(nType)
    		{
    			case IBPP::sdArray:
    			{
    				IBPP::sdArray tmpVar = new IBPP::ArrayFactory(&stm->mdbc->db,&stm->tr);
    			}			
    			break;
    
    			case IBPP::sdBlob:
    			{
    				IBPP::sdBlob tmpVar = new IBPP::BlobFactory(&stm->mdbc->db,&stm->tr);
    			}
    			break;
    
    			case IBPP::sdDate:
    			{
    				IBPP::sdDate tmpVar = new IBPP::Date();
    			}			
    			break;
    
    			case IBPP::sdDouble:
    			{
    				IBPP::sdDouble tmpVar;
    			}			
    			break;
    
    			case IBPP::sdInteger:
    			{
    				IBPP::sdInteger tmpVar;
    			}			
    			break;
    
    			case IBPP::sdLargeint:
    			{			
    				IBPP::sdLargeint tmpVar;
    			}
    			break;
    
    			case IBPP::sdSmallint:
    			{
    				IBPP::sdSmallint tmpVar;
    			}			
    			break;
    
    			case IBPP::sdString:
    			{			
    				IBPP::sdString tmpVar;
    			}			
    			break;
    
    			case IBPP::sdTime:
    			{
    				IBPP::Time tmpVar = new IBPP::Time();
    			}			
    			break;
    
    			case IBPP::sdTimestamp:
    			{			
    				IBPP::Timestamp tmpVar = new IBPP::Timestamp();
    			}			
    			break;
    
    			case IBPP::sdFloat:
    			{
    				IBPP::sdFloat tmpVar;
    			}			
    			break;
    		}
    

    Für weitere Hilfe wäre ich sehr dankbar.



  • Was soll denn z.B. "IBPP::sdArray" sein??? Das ist ja nur eine Zahl! Wie willst Du damit eine Variable deklarieren???



  • Oh Mann, sorry.

    Es ist halt spät, du hast natürlich recht.
    Entschuldige bitte vielmals.

    Ich danke dir recht herzlich!!!!


Anmelden zum Antworten