utilscls.h 'isbound()' Meldung



  • Bei folgendem Code bekomm ich die im Bild dargestellte Meldung.

    void __fastcall TForm1::KameraVerarbeitenClick(TObject *Sender)
    {
      Excel e = Excel("ERROR","ERROR",false,true);
      Preisliste l;
      int sel = Liste->Row;
      AnsiString id;
    
      for( int i = 0; i < Kameras.size(); i ++ )
      {
        if( Liste->Cells[1][sel].AnsiCompare(Kameras[i].Linse) == 0 )
        {
          if(Liste->Cells[2][sel].AnsiCompare("Highspeed Decoder") == 0)
          {
            id = Kameras[i].ID_HighspeedDecoder;
          }else{
            id = Kameras[i].ID_StandardDecoder;
          }
        }
      }
    
      for( int i = 0; i < Preise.Preis.size(); i ++ )
      {
        if( Preise.IDs[i].Pos(id) != 0 )
        {
          l.Nummer.push_back(Preise.Nummer[i]);
          l.Beschreibung.push_back(Preise.Beschreibung[i]);
          l.Preis.push_back(Preise.Preis[i]);
    
          FormVerarbeiten->add(Preise.Nummer[i],Preise.Beschreibung[i],Preise.Preis[i]);
        }
      }
    
      //e.savePreislisteToFile(l,getProgDir()+"Kamera_list.xls");
      FormVerarbeiten->ShowModal();
    }
    //---------------------------------------------------------------------------
    
    struct Kamera
    {
        int         minThrow;
        int         maxThrow;
        int         werteAnzahl;
        AnsiString  Linse;
        AnsiString  ExcelDatei;
        bool        StandardDecoder;
        bool        HighspeedDecoder;
        AnsiString         ID_StandardDecoder;
        AnsiString         ID_HighspeedDecoder;
        std::vector <int>    Throw;
        std::vector <double> Resolution;
        std::vector <double> Coverage;
        std::vector <double> MinElementPreferred_015;
        std::vector <double> MinElementAbsolute_015;
        std::vector <double> MinElementPreferred_1545;
        std::vector <double> MinElementAbsolute_1545;
        std::vector <double> MaxBeltSpeed_StandardDecoder;
        std::vector <double> MaxBeltSpeed_HighspeedDecoder;
    
        int getPositionByThrow(int thr)
        {
          for(int i = 0; i < werteAnzahl; i ++)
          {
            if( Throw[i] == thr ) { return i; }
          }
    
        return -1;
        }
    };
    
    struct Preisliste
    {
      AnsiString Pfad;
      std::vector <AnsiString> Nummer;
      std::vector <AnsiString> Beschreibung;
      std::vector <AnsiString> Preis;
      std::vector <AnsiString> IDs;
    };
    
    Excel::Excel(AnsiString Mappe_Pfad, AnsiString excelName, bool check, bool ignore)
    {
         if( !ignore )
         {
           //if( !testeTabelle(Mappe_Pfad) ) { throw("Die Excel-Datei ist fehlerhaft!"); }
    
           Excel_Var = Variant::CreateObject("Excel.Application");
           Excel_Var.OlePropertyGet("ActiveWorkBook");
           Excel_Var.OlePropertyGet("WorkBooks").OleFunction("Open",Mappe_Pfad.c_str());
    
           Sheet=Excel_Var.OlePropertyGet("ActiveSheet");
    
           minThrow = Sheet.OlePropertyGet("Cells",3,2).OlePropertyGet("Value");
           maxThrow = Sheet.OlePropertyGet("Cells",4,2).OlePropertyGet("Value");
           gruppe   = Sheet.OlePropertyGet("Cells",2,2).OlePropertyGet("Value");
    
           if( check && gruppe == 0 ) { if( !checkTabelle() ) { throw("Die Excel-Datei ist fehlerhaft!"); } }
           else if( check && gruppe == 1 ) { if( !checkPreisTabelle() ) { throw("Die Excel-Datei ist fehlerhaft!"); } }
    
           if( gruppe == 0 )
           {
             bool weiter = true;
             for(int i = 9; weiter; i ++)
             {
               AnsiString d = Sheet.OlePropertyGet("Cells",i,1).OlePropertyGet("Value");
               if( d.Length() == 0 )
               {
                 werteAnzahl = i-9;
                 weiter = false;
               }
             }
           }
         }
         excelDatei = excelName;
    }
    //---------------------------------------------------------------------------
    

    http://img104.imageshack.us/img104/8458/fehlerbg0.jpg

    thx



  • Hallo

    Offenbar eine Fehlermeldung wenn ein Index außerhalb des zulässigen Bereichs ist.
    Du must mit dem Debugger den Verlauf deines Programmes zur Laufzeit verfolgen und wichtige Werte (insbesondere Indexe) verfolgen.

    bis bald
    akari



  • Es liegt hier dran, nur warum?

    Excel e = Excel("ERROR","ERROR",false,true);
    

Anmelden zum Antworten