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);