:: Visual Foxpro, Foxpro for DOS
Как из переменной символьного типа получить переменную целочисленного?
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Поджскажите пожалуйста, как из переменной символьного (с) типа получить переменную целочисленного (i)?
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
AlexWM

Сообщений: 92
Дата регистрации: 15.10.2003
val()
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
если целочисленного Int(val())
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Цитата:
если целочисленного Int(val())

Тоесть на вопрос ?type(Int(val(lcVar))) Фокс ответит i?
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Нет, он ответит "N".




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
А мне нужно i

Неужели никак?
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Напиши свой ф-цию

iif(val(<VarName>)<>Int(val(<VarName>)),"N","I")




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Странно

iif(val(lnShingle)#Int(val(lnShingle)),"N","I")
?type('lnShingle')

на вопрос ?type('lnShingle') он отвечает С.
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
Mavy

Сообщений: 246
Дата регистрации: 04.08.2004
Переменных типа Integer в VFP нету. Такого типа может быть только поле таблы. А переменная со значением этого поля все равно будет Numeric.
Ratings: 0 negative/0 positive
Re: Как из переменной символьного типа получить переменную целочисленного?
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Правильно. Саму то переменную ты не переопределил.

t="123"
?MyType(t)
t="123.5"
?MyType(t)
Function MyType
parameter lnShingle
lnShingle=val(lnShingle)
return iif(lnShingle#Int(lnShingle),"N","I")



Отредактировано (15.04.05 12:36)


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
не много оффтоп
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
to Mavy
Ага. Если только Numeric то и замечательно

to AleksM
Спасибо за код ;) Но у меня переменная не может быть с десятичными знаками.

lnShingle= SYS(2007, lcShigle , 0, 1)
lnShingle=val(lnShingle)
SELECT (m.Shi1)
APPEND BLANK
REPLACE filenameid WITH lcID
REPLACE shingles WITH lnShingle
replace shingt WITH lcShigle

Но вот в чем дело, почему то на строчке REPLACE shingles WITH lnShingle (поле shingles типа Integer) Фокс выдает 39 ошибку (Математическая операция выдала в результате число, которое слишком велико и не может быть сохранено в поле или переменной, для которой предназначалось.)

Как такое может, если функция SYS(2007) выдает 32 битное значение, а поле типа Integer "is stored as a 4-byte binary value"?
Ratings: 0 negative/0 positive
Re: не много оффтоп
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Цитата:
Как такое может, если функция SYS(2007) выдает 32 битное значение, а поле типа Integer "is stored as a 4-byte binary value"?
Ты на калькуляторе считать умеешь 8 бит * 4 байта = 32 битное значение




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: не много оффтоп
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Цитата:
Ты на калькуляторе считать умеешь 8 бит * 4 байта = 32 битное значение
К сожалению умею, а то спал бы спокойнее.
Это меня и удивило. Почему если значение переменной 32 бита и такое же значение может принимать поле типа Integer, Фокс выдает 39-ю ошибку? Вопрос был именно в этом.
Ratings: 0 negative/0 positive
Re: не много оффтоп
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Потому что integer поля signed а не unsigned - почитай про типы данных в хелпе




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: не много оффтоп
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
rusl писал(а):
Цитата:
Цитата:
Ты на калькуляторе считать умеешь 8 бит * 4 байта = 32 битное значение
К сожалению умею, а то спал бы спокойнее.

А вот и горе от ума
Ratings: 0 negative/0 positive
Re: не много оффтоп
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Цитата:
Потому что integer поля signed а не unsigned - почитай про типы данных в хелпе

А переопределить его никак?
Ratings: 0 negative/0 positive
Re: не много оффтоп
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Нет - читай хелп




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: не много оффтоп
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi rusl!

Цитата:
А переопределить его никак?
А зачем? Если "собственно" значение тебе не важно (т.е. лишь-бы они
отличались друг от друга) - то например 2^31 -
твоё_32_битное_число_без_знака.
Можно и по другому поизвращаться. Можно вообще его на как I хранить, а как
C(4) NOCPTRANS - "вручную" разбивая 32 бита на байты




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 41 (Гостей: 41)

© 2000-2024 Fox Club 
Яндекс.Метрика