В ходе написания большой программы вам наверняка придется столкнуться с получением числа из его строкового представления. Давайте посмотрим, как это делается в VFP.
Собственно нас будет интересовать только одна функция VAL(), которая и осуществляет данное преобразование. Вот пример от Microsoft иллюстрирующий ее работу:
CLEAR STORE '12' TO A STORE '13' TO B ? VAL(A) + VAL(B) && Выводится 25.00 STORE '1.25E3' TO C ? 2 * VAL(C) && Выводится 2500.00
Вроде бы все просто, но мне приходилось сталкиваться с ситуациями, когда из строки текста нужно вырезать только цифры.
Например, у нас есть программка для построения некоего отчета, в котором фигурируют номера документов, а берутся они из числового поля таблицы. Поэтому номера типа "123а" мы записать туда не можем, а вот "123" запросто. Напишем функцию, возвращающую целое число из смешанного номера. Создадим программу с именем GetDigits, в ней пишем код:
function GetDigits(cMixedVal) cNumber = "" for nCounter = 1 to len(cMixedVal) cCharacter = substr(cMixedVal, nCounter, 1) if isdigit(cCharacter) cNumber = cNumber + cCharacter endif endfor if len(cNumber) > 0 nNumber = int(val(cNumber)) else nNumber = 0 endif return nNumber endfunc
Получаем следующий результат:
Обратное преобразование (из числа в строку) осуществляется функцией STR(). Здесь только следует обратить внимание на то, что в ней дополнительными параметрами могут указываться длина возвращаемой строки и количество десятичных мест. Если передаваемых десятичных мест меньше, чем реально есть в числе, то результат автоматически округлится в соответствии с передаваемыми параметрами. Если длина строки указывается меньше чем порядок числа, то вернется "*":
Надеюсь, что теперь преобразование Character - Numeric не вызовет у вас трудностей.