新しく発言する EXIT インデックスへ
変数名によっては自動的にLETが挿入されない...

  変数名によっては自動的にLETが挿入されない? 青木太一 2004/01/12 23:51:55 
  ご報告ありがとうございました。確かにそう... 白石和夫 2004/01/13 17:34:11 
   └Delphi6のバグor仕様変更が原因でした。Del... 白石和夫 2004/01/13 22:08:48 
    └別の不具合を発見したかも... 青木太一 2004/01/13 22:58:13 
     └Linux版を作り始めたとき気づいて扱いづらい... 白石和夫 2004/01/14 10:57:54 

  変数名によっては自動的にLETが挿入されない? 青木太一 2004/01/12 23:51:55  ツリーへ

変数名によっては自動的にLETが挿入されない? 返事を書く
青木太一 2004/01/12 23:51:55
十進BASICというか、翻訳時自動修正が意図どおりに働いてくれません。
バグでしょうか?

(以下は最新版をデフォルトの設定で行った操作です)
以下のような2行の単純なプログラムは実行すると
x=0
END

翻訳時自動修正により、自動的にLETが挿入され下のようになります。
LET x=0
END

ところが、変数名をx1として
x1=0
END

を実行しようとすると
「文法の誤り
=はここには書けません」
というエラーダイアログが出てしまいます。
ダイアログにある「ヘルプ」ボタンを押すと、
ヘルプの「内部関数定義」のページが出ます。

自分でLETを書き足せば、実行はできるので処理系ではなく翻訳時自動修正の問題だと思います。

ヘルプには
「変数名が本BASICの機能語と一致する場合,LETの自動挿入は機能しません。」
とありますが、x1は機能語ではありませんよね。

ほかにも、以下の変数名で同じエラーがでました。
xa
xaaa
x2
x3
xab
xaf

以下の変数名なら自動修正が行われます。
xag
xas
xx

また、変数名をx0としたときは、エラーダイアログが他と異なり「文法の誤り
行番号の形式が正しくない」
と出ます。

環境は以下のとおりです。
WindowsXP
ヘルプのバージョン情報
(仮称)十進BASIC Version5.1.8
OS情報 RICHED32.DLL 5.1.2600.0
RICHED20.DLL 5.30.23.1211

  ご報告ありがとうございました。確かにそう... 白石和夫 2004/01/13 17:34:11  ツリーへ

Re: 変数名によっては自動的にLETが挿入されない? 返事を書く
白石和夫 2004/01/13 17:34:11
ご報告ありがとうございました。確かにそうなります。
思い当たるふしがないので,調べてみます。

   └Delphi6のバグor仕様変更が原因でした。Del... 白石和夫 2004/01/13 22:08:48  ツリーへ

Re: ご報告ありがとうございました。確かにそう... 返事を書く
白石和夫 2004/01/13 22:08:48
Delphi6のバグor仕様変更が原因でした。Delphi3でコンパイルしている十進BASIC5.0.11では問題なく動作します。近いうちに対策を取ります。

    └別の不具合を発見したかも... 青木太一 2004/01/13 22:58:13  ツリーへ

Re: Delphi6のバグor仕様変更が原因でした。Del... 返事を書く
青木太一 2004/01/13 22:58:13
別の不具合を発見したかも...

すばやい原因究明ありがとうございます。
翻訳時自動修正のLET挿入や、インデント挿入は大変便利な機能だと思うので、よろしくおねがいします。

さて、別の不具合を発見したようです。
別スレッドにした方がいいかもと思いましたが、似たような現象なのでここにぶらさげます。
(もしかしたらご存知かもしれませんが)
「入力時オートフォーマット」(機能語を大文字に変換する)
を有効にしていると、shift+矢印キーを利用した領域選択がうまくいかないときがあります。
(私自身は有効にしていないので困らないのですが...)

たとえば、
1.エディタに一文字「a」とだけ入力された状態にします。
2.カーソル(点滅する縦棒)を「a」と同じ行の「a」の直後に置きます。
3.「shift」を押しながら「←」を押し下げる。
4.「shift」を押し下げたまま「←」を放す

このとき、通常のテキストボックスなら「a」が色反転し、選択された状態になっています。カーソルは「a」の直前の位置にきます。
しかし、
「入力時オートフォーマット」(機能語を大文字に変換する)
が有効になっていると、一瞬「a」は色反転しますが、すぐに反転解除されてしまいます。
カーソルは「a」の直前にきます。

不具合の法則はわかりまでんが、shift+矢印キーによる領域選択中に、
なんらかの条件を満たすと選択が解除されてしまうようです。
(機能語が大文字になるタイミングとは関係なく)

些細な現象ですが、一応ご報告を。
環境は同じく
WindowsXP
ヘルプのバージョン情報
(仮称)十進BASIC Version5.1.8
OS情報 RICHED32.DLL 5.1.2600.0
RICHED20.DLL 5.30.23.1211

     └Linux版を作り始めたとき気づいて扱いづらい... 白石和夫 2004/01/14 10:57:54  ツリーへ

Re: 別の不具合を発見したかも... 返事を書く
白石和夫 2004/01/14 10:57:54
Linux版を作り始めたとき気づいて扱いづらいと感じていたところです。Linux版ではオートフォーマットをWindows版とは異なる条件で起動するようにしています。Windows版についても見直しを図ります。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。