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

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

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

Сообщение baklan » 28.10.2005 21:56:45

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

Сообщение Андрей Головин » 28.10.2005 22:40:17

RTFM на предмет val и str.
Андрей Головин
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.10.2005 18:24:15

Сообщение STAKANOV » 28.10.2005 23:50:20

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

Сообщение baklan » 29.10.2005 09:54:05

Да , спасибо, оказалось все просто, применил
Val(slovo, znachenie,code)
Жаль, что искать пришлось оооочень долго. Документации для чайников не нашел нигде.
baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва

Сообщение Guest » 29.10.2005 21:44:08

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

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

Сообщение baklan » 30.10.2005 13:34:20

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

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

Сообщение STAKANOV » 30.10.2005 14:16:46

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

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

Можешь ) Прсто при преобразованиях вещественных значений для Str и Val десятичная точка это всегда ".", а для FloatToStr и StrToFloat это зависит от настроек локализации системы.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение baklan » 30.10.2005 16:07:09

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

Сообщение baklan » 30.10.2005 16:56:02

Теперь другая проблема, функция StrToFloat описана так
Function StrToFloat(Const S : String) : Extended;
выходит, что она может преобразовать только константу? а как же с простой переменной?
baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва

Сообщение Sphinx » 31.10.2005 14:08:55

Function StrToFloat(Const S : String) : Extended;

тут Const имеет несколько инной смысл - в саму процедуру величина передается как константа, то есть при выходе из процедуры не сохраняется результат преобразований переменной S, если такое имело место быть в процедуре.
Sphinx
новенький
 
Сообщения: 33
Зарегистрирован: 27.09.2005 21:52:09

Сообщение baklan » 31.10.2005 14:26:55

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

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

var
middle : single;
slovo : string;
.......
middle := StrToFloat (slovo);
baklan
новенький
 
Сообщения: 18
Зарегистрирован: 23.10.2005 21:07:00
Откуда: Москва

Сообщение Гость_PVOzerski » 31.10.2005 14:49:45

Почти наверняка несоответствия либо с разделителем десятичным, либо с разделителем тычяч. Проверь значения переменных ThousandSeparator+'##0'+DecimalSeparator
Гость_PVOzerski
 

Сообщение PVOzerski » 31.10.2005 14:53:12

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

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

Сообщение STAKANOV » 31.10.2005 21:11:11

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

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

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

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

Сообщение baklan » 31.10.2005 21:27:39

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

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

Рейтинг@Mail.ru
cron