Tcl/Tk 8.5.10 が文字列/数値変換を正しく処理していないため、壊れたこれらの Tcl/Tk バージョン 8.1 プログラムがすべてあります。
ここで、Tcl にシェルし、次のように入力します。
% expr {01}
1
(等々..)
% expr {06}
6
% expr {07}
7
そして8に到達...
% expr {08}
missing operator at "_@_"
無効な 8 進数のようです
しかし、それは悪化します。まだ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番が生成されたり使用されたりしたときだけ!私は問題を理解しようと何時間も費やしました。しかし、それは私が使用している厄介なコードの袋であることが判明しました!
だから、私はこの暴言を警告として投稿しています。
Tcl/Tk バージョン 8.5.10 は、数字の 8 を正しく処理しません。フォーマット ステートメントから正常な動作を期待している場合、これは発生しません。コードは {08} という値の文字列に遭遇するまで飛んでいき、Tcl 8.5.10 インタープリターはエラーを生成します。あなたが使用した他のすべての小さな数字はうまくいきます!
上記の問題の解決策の 1 つは、Tcl 8.1 シェルにダウングレードすることです。そのバージョンが、少なくとも番号 08 のフォーマット ステートメントを正しく処理することを確認しました。Tcl 8.5.10 シェルは単純にそうではありません。