Показать сообщение отдельно
Старый 08.12.2009, 22:59   #8
DeadElf
ПроЭктировщик
 
Регистрация: 22.07.2009
Адрес: Московский Метрополитен)))
Сообщений: 100
Написано 25 полезных сообщений
(для 31 пользователей)
Ответ: Интересно и вроде недокументровано

давайте вернёмся к теме, а?))

короче, как я понял по вот этому коду:
Local bool%=Str("70")<Str("600")
Print bool
WaitKey()
End
ты хочешь проверить, будет ли 70 меньше чем 600. блиц выводит, что нет.
почему? смотрим хелп по команде str:

Используйте эту команду, чтобы преобразовать числовое значение в строковое значению для использования с командами обработки строк. Blitz запросто печатает числовые значения так же, как и строчные, но если Вы захотите использовать такие функции, как LEFT$ или подобные, Вы должны будете преобразовать вашу числовую переменную в строчную. Заметьте: в процессе преобразования все 6 десятичных цифр будут представлены в виде числа с плавающей запятой . 

Если Вы пожелаете выполнить обратное действие - преобразовать строку в число, то не найдете в Blitz-е никакой команды, эквивалентной команде Val в другтх версиях Бейсика. Вместо этого просто присвойте строковую переменную числовой переменной, и Blitz сам преобразует её.
проще говоря, он преобразует число 70 в "70". а ты задаешь ему сразу "70". понятное дело, заковыка... блиц путается и сравнивает значения посимвольно: "7">"6"? да, выходим из проверки. получаем 0. если же сделать int("70") и int("600"), то получим, что всё в порядке. если же поставить Str(70) и Str(600), то опять получим 0, потому как он проверяет посимвольно. Никаких проблем и ошибок нет.
(Offline)
 
Ответить с цитированием