FloatToString
-
Grid1 ist in dem Fall ein AdvStringGrid, aber ich habe die gleiche Meldung wenn ich ein double benutze
FloatToStr(myDouble).c_Str();
-
Bei einem kleinen s in c_str() muß das gehen.
-
Hallo,
also wenn ich in meinem Builder 6
Application->MessageBox(FloatToStr(2.14).c_str(), "test", 0); double my_double = 2.14; Application->MessageBox(FloatToStr(my_double).c_str(), "test", 0);
schreibe, compiliere und ausführe, hab ich keine Fehler --> beide MessageBox'en werden angezeigt und jedesmal steht 2,14 darin. Ist der Wert in Grid1[1][1] bzw. myDouble denn auch ein double?
mfg, Micha!
-
habe ich versucht:
LlDefineVariableExt(hJob, "Stufen",IntToStr(CSpinEdit4->Value).c_str(),LL_NUMERIC, NULL);
mit int geht es mit double nicht:
LlDefineVariableExt(hJob, "Stufen",FloatToStr(CSpinEdit4->Value).c_str(),LL_NUMERIC, NULL);
Keine Ahnung ob das ein L&L-PRoblem ist, jedenfalls kommt immer Konvertierung nicht möglich.
-
Das muß aber gehen.
Weise den String doch erstmal einer Variablen zu.AnsiString tf = FloatToStr(CSpinEdit4->Value); LlDefineVariableExt(hJob, "Stufen",tf.c_str(),LL_NUMERIC, NULL);
-
habe ich versucht:
LlDefineVariableExt(hJob, "Stufen",IntToStr(CSpinEdit4->Value).c_str(),LL_NUMERIC, NULL);
mit int geht es mit double nicht:
LlDefineVariableExt(hJob, "Stufen",FloatToStr(CSpinEdit4->Value).c_str(),LL_NUMERIC, NULL);
Keine Ahnung ob das ein L&L-PRoblem ist, jedenfalls kommt immer Konvertierung nicht möglich.
-
Braunstein schrieb:
Weise den String doch erstmal einer Variablen zu.
AnsiString tf = FloatToStr(CSpinEdit4->Value); LlDefineVariableExt(hJob, "Stufen",tf.c_str(),LL_NUMERIC, NULL);
Das ist aber nicht das, was Du versucht hast.
-
Danke Braunstein, so ist es, man muß es außerhalb zusammenbauen, dann geht es.
-
Es könnte ja auch daran liegen das der Rückgabewert von FloatToStr(..) nicht als AnsiString erkannt wird und der den die Methode c_str() nicht kennt.
vielleicht hilft ja ein cast?
LlDefineVariableExt(hJob, "Stufen",((AnsiString)FloatToStr(CSpinEdit4->Value)).c_str(),LL_NUMERIC, NULL);
nur mal so als Idee. (nicht getestet)
MfG
-
Destiniy schrieb:
[...]vielleicht hilft ja ein cast?
LlDefineVariableExt(hJob, "Stufen",((AnsiString)FloatToStr(CSpinEdit4->Value)).c_str(),LL_NUMERIC, NULL);
[...]
Kommt ja dann auf's Selbe raus wie Braunsteins Vorschlag, oder?
-
Lass sowas lieber bleiben. Mal abgesehen davon, dass FloatToStr einen AnsiString zurückgeben sollte, was erwartest du denn als Ergebnis wenn hier z.Bsp. std::string zurückgegeben wird?
Da kein Konvertierungsoperator von std::string nach AnsiString existiert gibt das undefiniertes Verhalten. Also bitte keine C-casts.[edit]Das war auf Destiniy bezogen.[edit]
-
Wieso muss da eigentlich FloatToStr verwendet werden? CSpinEdit kann nur mit Integer und AdvStringGrid klingt eher nach Strings, als nach Float... Und bei CSpinEdit könnte man die Textrepresentation direkt über die Texteigenschaft abrufen.
-
Ich hatte nicht gesagt, das mein CSpinEdit von TMS ist und Float beherrscht.
Ich habe den String jetzt so zusammengebaut und bisher funktioniert das auch wunderbar. Ich weiß auch nicht ob es bei List&Label noch eine andere Möglichkeit
gibt Variablen vom Typ double zu übergeben, als mit AnsiString.c_str().In jedem Fall Danke an alle die geholfen haben.
Gruß myerscola
P.S. nächstesmal logge ich mich auch wieder ein
-
Wenn Du AdvStringGrid benutzt, kannst du auf den Zellinhalt als String mit
Grid->Cells[spalte][zeile] (liefert AnsiString) zugreifen.
D.h. Grid->Cells[spalte][zeile].c_str() liefert Dir einen char*.Nebenbei liefert Grid->Floats[spalte][zeile] den Zellinhalt als double. Ähnliche Properties gibt es auch für andere Datentypen (Ints,Dates ...).
In der Hilfe ist das auch gut dokumentiert
mfg
-
Hi,
könnte es eventuell daran liegen, daß Du versucht hast, auf die C-String-Repräsentation eines temporären Objekts zuzugreifen versuchst und das das im Verwendungsmoment schon zerstört ist?
Mal Myers lesen.
Gruß Mümmel