Exception tritt auf
-
Hallo,
ich habe folgenden Code geschrieben:
if((RadioGroup1-> ItemIndex)==1) { zaehler=0; Back->Enabled=true; for (j=1;j<14;j++) { //****************Milch********************* MilchVer=FormDaten->DBGridVER->DataSource->DataSet->FieldByName("Milch_kg"+AnsiString(j))->AsString; mlk1.mMilch[j]=MilchVer; if(zaehler<14) { Memo1->Lines->Add(MilchVer); Chart1->Series[0]->AddXY(j-1,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor); } zaehler++;
Es tritt immer eine Exception auf, wenn ich sie aufsfühen will.
Erkennt jemand den oder die Fehler?LG
Eliza
-
Hallo,
keine Ahnung! Aber wieso verwendest du "Zaehler" wenn du doch "j" mit den gleichen Eigenschaften hast?
Bist du den Code mal mit dem Debugger durchgegangen und hast geschaut an welcher Stelle der Fehler auftritt?
LG, Micha
-
Ich würde es so programmieren:
if((RadioGroup1-> ItemIndex)==1) { zaehler=0; Back->Enabled=true; for (j=1;j<14;j++) { //****************Milch********************* MilchVer=FormDaten->DBGridVER->DataSource->DataSet->FieldByName("Milch_kg"+AnsiString(j))->AsString; mlk1.mMilch[j]=MilchVer; if(zaehler<14) { Memo1->Lines->Add(MilchVer); double db_MilchVer = 0; // Versuche von String nach double zu wandeln: // =========================================== try { db_MilchVer = StrToFloat(Memo1->Lines->Strings[j]); } catch(...){} Chart1->Series[0]->AddXY(j-1,db_MilchVer,"",clTeeColor); } zaehler++;
-
Hallo sonic,
ich habe es auf deine Weise probiert.
Es tritt trotzdem eine Exception auf.
Was muss eigentlich in
catch(...){} stehen?LG
Eliza
-
Hallo,
die Fehlerbehandlung
try { /*VersuchIrgendwas();*/ } catch (Exception& e) { ShowMessage(e.Message); }
Lässt man catch leer, so wird dem Benutzer am Ende keine konkrete Fehlermeldung ausgespuckt...
LG, Micha
-
Kann sein, dass du in Verbindung mit meinem Code die Exceptions deaktivieren musst:
Tools->Debugger Optionen->Sprachexceptions->Hacken "Bei Exceptions stoppen" deaktivieren.
-
Hallo,
ich habe jetzt alle Vorschläge umgesetzt, aber die Exception tritt immer noch auf.
Sie lautet:
Es ist eine Exception der Klasse EConvert aufgetreten. Meldung: "Kein gültiger Gleitkommawert". Prozess wurde aufgehalten.
LG
Eliza
-
Dann tritt der Fehler irgendwo anders auf. Eventuell in deinem Code, den du nicht gepostet hast.
-
Hallo,
die Exception tritt im Debug-Modus auch auf wenn sie eigentlich abgefangen wird. Wäre sonst ziemlich schwer für den Programmierer Fehler zu finden...
Kompilier das Projekt mal vollständig und führ die darausfolgende .exe aus.
Die fehlermeldung besagt ja ziemlich eindeutig dass ein Wert nicht in double / float konvertiert werden kann, weil er keine gültige Gleitkommazahl ist. Also wird der Fehler auch bei StrToFloat auftreten...
LG, Micha
-
was für einen Variablentyp haben denn "MilchVer" und "mlk1.mMilch[j]"?
die Verwendung des Debuggers wird hier beschrieben: Debuggen, damit kannst du genau die Zeile finden, an der der Fehler auftritt
-
Mit dieser Zeile holst du einen Wert aus der Datenbank
MilchVer=FormDaten->DBGridVER->DataSource->DataSet->FieldByName("Milch_kg"+AnsiString(j))->AsString;
Dann übergibst du den Wert in ein struct und in ein Memofeld mit
mlk1.mMilch[j]=MilchVer; Memo1->Lines->Add(MilchVer);
Hier bin ich nicht sicher welchen Wert du in den Chart übergeben willst... sicher den Wert aus der Datenbank ? falls ja dann mit
Chart1->Series[0]->AddXY(j-1,StrToFloatDef(MilchVer, 0),"",clTeeColor);