изменить тип переменной

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

Вот есть переменная slovo типа string и она принимает значения в том числе числовые. Подскажите как числовой переменной присвоить значение строковой, если конечно это возможно.
Иными словами. я разбил строку на слова
154318 EURUSD 04.01.2005 2:00:01 700000 1.3535 0.00 0.00 -2
с некоторыми из них мне нужно сделать арифметические действия, но ведь они строковые...
Андрей Головин
незнакомец
Сообщения: 2
Зарегистрирован: 13.10.2005 18:24:15

Сообщение Андрей Головин »

RTFM на предмет val и str.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

а так же IntToStr и FloatToStr
baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

Да , спасибо, оказалось все просто, применил
Val(slovo, znachenie,code)
Жаль, что искать пришлось оооочень долго. Документации для чайников не нашел нигде.
Guest

Сообщение Guest »

baklan писал(а): Да , спасибо, оказалось все просто, применил
Val(slovo, znachenie,code)
Жаль, что искать пришлось оооочень долго. Документации для чайников не нашел нигде.

Теперь главное - всешда помни о важгости десятичной точки, для этой процедуры это всегда "."
baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

Guest писал(а): Теперь главное - всешда помни о важгости десятичной точки, для этой процедуры это всегда "."

не понял про точку... , разве в целое число я не могу преобразовать?
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

baklan писал(а):
Guest писал(а): Теперь главное - всешда помни о важгости десятичной точки, для этой процедуры это всегда "."

не понял про точку... , разве в целое число я не могу преобразовать?

Можешь ) Прсто при преобразованиях вещественных значений для Str и Val десятичная точка это всегда ".", а для FloatToStr и StrToFloat это зависит от настроек локализации системы.
baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

Понял, спасибо, я все на точку настроил, так что у меня везде точка будет.
baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

Теперь другая проблема, функция StrToFloat описана так
Function StrToFloat(Const S : String) : Extended;
выходит, что она может преобразовать только константу? а как же с простой переменной?
Sphinx
новенький
Сообщения: 33
Зарегистрирован: 27.09.2005 21:52:09

Сообщение Sphinx »

Function StrToFloat(Const S : String) : Extended;

тут Const имеет несколько инной смысл - в саму процедуру величина передается как константа, то есть при выходе из процедуры не сохраняется результат преобразований переменной S, если такое имело место быть в процедуре.
baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

Компилируется нормально, но при выполнении выдает
An unhandled exception occurred at $00408B79 :
EConvertError : "" is an invalid float

Вот фрагмент кода

var
middle : single;
slovo : string;
.......
middle := StrToFloat (slovo);
Гость_PVOzerski

Сообщение Гость_PVOzerski »

Почти наверняка несоответствия либо с разделителем десятичным, либо с разделителем тычяч. Проверь значения переменных ThousandSeparator+'##0'+DecimalSeparator
PVOzerski
постоялец
Сообщения: 109
Зарегистрирован: 19.05.2005 13:45:10
Откуда: СПб
Контактная информация:

Сообщение PVOzerski »

Имелось в вид следующее: :) Сорри за невовремя нажатую кнопку :)

Почти наверняка несоответствия либо с разделителем десятичным, либо с разделителем тычяч. Проверь значения переменных ThousandSeparator и DecimalSeparator.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

baklan писал(а): Компилируется нормально, но при выполнении выдает
An unhandled exception occurred at $00408B79 :
EConvertError : "" is an invalid float

Вот фрагмент кода

var
middle : single;
slovo : string;
.......
middle := StrToFloat (slovo);

а slovo чему равно ?
baklan
новенький
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва
Контактная информация:

Сообщение baklan »

переменная slovo собирается по символам slovo := slovo + c;
и если вывести его не преобразовывая, то оно выводится примерно так 1.2305
Я пробовал и менять точку на запятую, результат тот же. Ну собственно я уже бросил, терпения не хватило, ща накачал кучу документации, разбираюсь пока теоретически. В голове каша, все языки разные...
Ответить