![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть кусочек кода в котором я пытаюсь понять почему не получается из строки получить число с точкой.
Код:
var a : array[1..20] of string[20]; testvar : Double; temp : string; Код:
a[3]:='5624.6873'; a[3][5]:=','; //исправить разделитель tmp:=a[3]; testvar:=StrToFloat(tmp); отладчик показывает, что testvar получается 4,668.....е.. если убрать лишнюю строку и написать просто StrToFloat(a[3]), то testvar будет 7,23.... В моём понимании, должно получиться testvar=5624,6873 Что я делаю не так? |
#2
|
|||
|
|||
![]() Ваш код правильный (за исключением temp <-> tmp ???).
Только что проверил : Код:
procedure TForm1.Button1Click(Sender: TObject); var a : array[1..20] of string[20]; testvar : Double; temp : string; begin a[3]:='5624.6873'; a[3][5]:=','; //исправить разделитель ShowMessage(a[3]); temp:=a[3]; testvar:=StrToFloat(temp); ShowMessage(FloatToStr(testvar)); end; |
#3
|
|||
|
|||
![]() Спасибо!
Ошибка с tmp/temp появилась тут - невнимательно перепечатал, в оригинале всё верно. Не понятен тогда следующий момент: строкой ниже стоит ListBox1.Items.Add('*'); На эту строку поставлен break point. Когда он срабатывает, я смотрю состояние переменных наводя курсор - ситуация как описал выше. Если перед этой строкой с break point поставить ShowMessage(FloatToStr(testvar)); или саму строку заменить на ListBox1.Items.Add(ShowMessage(FloatToStr(testvar) )); тоесть добавить в код преобразование обратно (FloatToStr), отладчик начинает показывать всё верно testvar=5624,6873 С чем это связано? |
#4
|
|||
|
|||
![]() В контексте отладчика я плохой советчик.
Никогда не использовал (не было надрбности). Может кто-то другой подскажет. |