【发布时间】:2018-06-10 14:44:43
【问题描述】:
我正在尝试将AnsiString 转换为double,但运行程序后,它显示“20.60 不是有效的浮点数”。
AnsiString Temperatur
RE_Temperatur->Text = Temperatur;
Chart1->Series[0]->AddXY(DT_Uhrzeit->Time, RE_Temperatur->Text.ToDouble(),
"", clRed);
Temperatur 的值来自我的 Arduino 的 SerialPort 连接,并提供诸如 20.60 之类的东西。当我将字符串剪切到前 2 位时,它工作正常。猜测. 与错误有关,但我不知道如何解决。
编辑 // 我现在试图只替换“。”带有“,”的代码如下:
RE_Temperatur->Text = StringReplace(RE_Temperatur->Text, ".", ",",
TReplaceFlags() << rfReplaceAll);
现在我收到一条错误消息“20,60 不是有效的浮点数”。太令人沮丧了:/
【问题讨论】:
-
这个
AnsiString类是在哪里定义的?是否有可能它是区域设置感知的,并且您的区域设置有,而不是.作为小数点分隔符? -
我正在使用 Codegear,忘了说,我必须在哪里查找这个?是我正在使用的编译器的设置中的东西吗?
-
也有可能 Arduino 提供的数据(例如不可打印的字符)无法作为浮点值进行扫描。
-
Arduino 正在将字符串发送到串行端口,在我的 C++ 程序中,我正在将字符串转换为 Ansistring 以将其放入我的编辑框中。
-
@Angew -
AnsiString是与 Borland/Inprise/Embarcadero C++ Builder 产品相关的供应商特定类型。
标签: c++builder ansistring