У меня есть все эти программы Tcl / Tk версии 8.1, которые сломались из-за того, что Tcl / Tk 8.5.10 неправильно обрабатывает строковые / числовые преобразования.
Здесь перейдите в Tcl и введите:
% expr {01}
1
(и т. Д.)
% expr {06}
6
% expr {07}
7
и тогда мы получим 8 ...
% expr {08}
missing operator at "_@_"
выглядит как неверное восьмеричное число
Но становится хуже. Все еще в оболочке Tcl, попробуйте это:
В моей оболочке Tcl8.1:
% format "%.0f" {08}
8
Но в моей новой улучшенной оболочке Tcl8.5 я получаю сообщение об ошибке:
% format "%.0f" {08}
expected floating-point number but got "08" (looks like invalid octal number)
Это просто глупо!
У меня есть весь этот код, который работает нормально в Tcl7.6 и Tcl8.1, но который начал давать
странные, случайные результаты в Tcl8.5. Только когда число 08 случилось с
получить или быть использованы! Я часами пытался выяснить проблему.
Но оказывается, что это просто противный мешок с кодом , который я использую!
Итак, я выкладываю эту напыщенную речь как предупреждение.
Версия 8.5.10 Tcl / Tk неправильно обрабатывает число восемь. Если ты
ожидая вменяемого поведения от ваших утверждений формата, это не произойдет .
Ваш код будет развиваться, пока не встретит строку со значением {08}, и
интерпретатор Tcl 8.5.10 выдаст ошибку, потому что он будет предполагать
что {08} представляет собой особый случай восьмеричное число , независимо от того, что все
другие маленькие цифры, которые вы использовали, сработали бы просто отлично!
Одним из возможных решений упомянутой выше проблемы является переход на Tcl 8.1.
ракушка. Я подтвердил, что эта версия по крайней мере обрабатывает формат
Заявления на номер 08 правильно. Оболочки Tcl 8.5.10 просто нет.