Problem bei str->int Konvertierung
-
Hallo,
Ich hatte das im folgenden beschriebene Problem. Mittlerweilen habe ich die Sache anders gelöst. Auch wesentlich eleganter.
Mich würde dennoch interessieren, was der Fehler war. Wäre nett, wenn mir das jemand erklären kann:Das Programm soll das folgende TXT-File (test.txt) auslesen und die Werte den SpinEdits zuweisen:
Wert von AdvSpinEdit1
14
Wert von AdvSpinEdit2
0,13
Wert von AdvSpinEdit3
2,1Den folgenden Code hab ich zum Teil (v.a. die Funktionen convert_i und convert_float) aus dem bekannten Buch von Richard Kaiser (Aufgabe 4.6.7) geklaut.
void __fastcall TForm1::ButtonLoadClick(TObject *Sender) { string buffer; int i = 0; ifstream f("test.txt"); getline(f, buffer); getline(f, buffer); AdvSpinEdit1->Value = convert_i(buffer); //Fehlermeldung Zeile 62 getline(f, buffer); getline(f, buffer); AdvSpinEdit2->FloatValue = convert_float(buffer); //Fehlermeldung Zeile 69 getline(f, buffer); getline(f, buffer); AdvSpinEdit3->FloatValue = convert_float(buffer); //Fehlermeldung Zeile 76 f.close(); } //--------------------------------------------------------------------------- int convert_i(string buffer) { int zahl = 0; istringstream is(buffer); is.exceptions(ios::failbit); is >> zahl; return zahl; } //--------------------------------------------------------------------------- float convert_float(string buffer) { float zahl; istringstream is(buffer); is.exceptions(ios::failbit); is >> zahl; return zahl; }
Beim compilieren treten die folgenden Fehlermeldungen auf:
[C++ Fehler] Unit1.cpp(62): E2034 Konvertierung von 'string' nach 'int' nicht möglich
[C++ Fehler] Unit1.cpp(62): E2342 Keine Übereinstimmung des Typs beim Parameter 'string' ('int' erwartet, 'string' erhalten)
[C++ Fehler] Unit1.cpp(69): E2034 Konvertierung von 'string' nach 'int' nicht möglich
[C++ Fehler] Unit1.cpp(69): E2342 Keine Übereinstimmung des Typs beim Parameter 'string' ('int' erwartet, 'string' erhalten)
[C++ Fehler] Unit1.cpp(76): E2034 Konvertierung von 'string' nach 'int' nicht möglich
[C++ Fehler] Unit1.cpp(76): E2342 Keine Übereinstimmung des Typs beim Parameter 'string' ('int' erwartet, 'string' erhalten)Ich hab nen ganzen Tag dran rumgeknobelt, komme aber nicht drauf. Vermute, dass ich eine Eigenheit von string übersehe.
Danke vorab
chris_f
-
Der Quellcode stimmt und ist auch ausführbar.
Ich habs nicht mit nem BCB getestet (hab ich zur Zeit nicht instlliert). Aber mit dem Dev++ compiliert sich das wunderbar.Wenn der BCB das ncht schluckt hat der BCB nen Bug.
-
Naja,
irgendwie beruhigen, dass der Fehler nicht bei mir lag.
Irgendwie beunruhigen, dass der BCB Scheiße baut...Danke fürs ausprobieren
chris_f
-
chris_f schrieb:
Irgendwie beunruhigen, dass der BCB Scheiße baut...
Immer schön vorsichtig mit solchen Aussagen!
Sowohl im BCB5 als auch im BCB6 compiliert der Code hier anstandslos.
-
Nicht böse sein
Mein BCB 6 nicht.
Ich ziehe meine letzte Aussage zurück und sage:
Mein BCB macht Fehler.
Nur wie heißt's so schön: Der Felher sitzt immer vor der Tastatur.
Schade nur, dass es nicht reproduzierbar ist. Hätte mich schon interessiert.
Danke.
-
chris_f schrieb:
Der Felher sitzt immer vor der Tastatur.
So deutlich wollt ich's nicht sagen.
Schade nur, dass es nicht reproduzierbar ist.
Warum schade? Wäre dir ein Bug im BCB lieber als ein Fehler im eigenen Code? Bei letzterem hast du zumindest eine Chance, ihn (selbst) zu finden und zu korrigieren.
Ansonsten: hast du das Ganze mal in einem Minimal-Projekt getestet, ggf. in eine Konsolenanwendung?