カーソルの位置No.07655
さん 01/02/24 21:42
 
初めて投稿させてもらいます。

バグなのか、仕様なのかわかりませんが、私の環境では、
不具合が生じていますので、報告させてもらいます。

strlenの不具合については、すでに解決しているようなので、
省略させてもらいます。

カーソル位置がずれるという不具合なのですが、
まず、秀丸を2つ開いて、横に並べるを実行します。

次に、次の秀丸も検索するのオプションを選択して、検索をします。
このとき、検索対象がなければ、次の秀丸を検索しますが、
この後に、Shift+Tabで、元の秀丸に戻ると、

表示されているカーソルの位置は、検索を開始したままの場所ですが、
実際のカーソルの位置は、一つ右に移動しているようです。

また、行の最後(改行の前)で、上記のことを行い、
すぐに、範囲指定を行うと、範囲指定される行と、
表示されるカーソルの行がずれます。

私としては、カーソルの位置は、実際の位置と表示される位置の
両方が検索を開始したときの位置のほうがいいのですが、
秀丸担当様やみなさんはどのように考えられますか?

もう一つ疑問に思っていることがあるので、質問させてもらいます。
getinistrやgetininumで、iniファイルから情報を取得するとき、
iniファイルが65535バイトぐらい以上の場合(実際には、
もう少し小さいみたいです)、それ以降の情報は、
取得できないのでしょうか?

たとえば、取得したい情報が、65535バイト以降にある場合です。

また、ini形式でないデータファイルから直接データを取得することは、
可能ですか?

ちなみに私の現在の環境は、OS:98 IE:5.5
秀丸3.07です。
(P.S.今は、3.08βですが...)


[ ]
RE:07655 カーソルの位置No.07656
さん 01/02/24 21:43
 
>strlenの不具合については、すでに解決しているようなので、
>省略させてもらいます。

linelenの間違いです。すいません。

[ ]
RE:07656 カーソルの位置No.07657
さん 01/02/24 23:26
 
バグらしきものが、もう一つありましたので、
報告します。

disabledrawで、マクロを実行中に、Alt+Tabで画面を切り替え、
元に戻した場合は、秀丸は、真っ白の画面になります。

これは、画面の書き換えを禁止しているからわかるのですが、
Windowskey+Dで、ディスクトップを表示した後に、
Alt+Tabで、秀丸にウィンドウを戻すと、画面が書き換えられています。



[ ]
RE:07655 カーソルの位置No.07658
TAKA さん 01/02/24 23:39
 
こんばんは。TAKA と申します。
少し補足させて下さい。

>次に、次の秀丸も検索するのオプションを選択して、検索をします。
>このとき、検索対象がなければ、次の秀丸を検索しますが、
>この後に、Shift+Tabで、元の秀丸に戻ると、
>
>表示されているカーソルの位置は、検索を開始したままの場所ですが、
>実際のカーソルの位置は、一つ右に移動しているようです。

ここで言う実際のカーソルの位置とは、秀丸の右上に表示されてい
るものです。


>また、行の最後(改行の前)で、上記のことを行い、
>すぐに、範囲指定を行うと、範囲指定される行と、
>表示されるカーソルの行がずれます。

// テストファイル1(ここから)
test1
// テストファイル1(ここまで)

// テストファイル2(ここから)
test2
// テストファイル2(ここまで)

テストファイル1の「test1」の後ろで「test2」を検索してテスト
ファイル1に戻りカーソル移動を行うとおかしくなります。
一番上なのでそれ以上は上に行けないはずですが、一行上にカーソ
ルが移動出来たりします。
実際には行けない場所に移動出来るようになりますので、もう少し
大きなテストファイルだと改行より右に行ける場合もあります。
(フリーカーソルモードはOFFでも)


>私としては、カーソルの位置は、実際の位置と表示される位置の
>両方が検索を開始したときの位置のほうがいいのですが、
>秀丸担当様やみなさんはどのように考えられますか?

これは、上で説明した不具合が直れば直る問題だと思います。


>もう一つ疑問に思っていることがあるので、質問させてもらいます。
>getinistrやgetininumで、iniファイルから情報を取得するとき、
>iniファイルが65535バイトぐらい以上の場合(実際には、
>もう少し小さいみたいです)、それ以降の情報は、
>取得できないのでしょうか?

これは、WindowsのAPI(ウインドウズの機能を使うために用意され
ているもの)の制限です。
このAPIはOSごとに若干仕様が異なるものもあります。
95や98は16ビットOSですので、16ビットで扱える65535バイト
までになっています。
NTは32ビットOSですので、32ビットまで扱えます。
秀丸もこのAPIを利用していると思いますので、その制限に引っか
かってしまいます。
ファイルを分けるとか、OSを変えるとかしないとだめだと思います。


>また、ini形式でないデータファイルから直接データを取得することは、
>可能ですか?

ini形式でないデータファイルということは、セクション名やキー
名がないということですよね。
独自のファイルということは独自でアクセスするしかありませんが、
ファイルを開かずにファイルの中身を取得する方法はマクロ命令に
なかったと思います。
ただ、似たようなことは出来ます。
openfileに/hというステルスモード(開いても見えない状態に出来
る)がありますので、一度開いて、gettextで文字を取得すれば、
希望されるものに近いものが出来ると思います。
詳しいことが知りたいようであれば、マクロ作者会議室で質問して
見て下さい。
どのようなことがやりたいか質問すれば、親切な人が教えてくれる
場合があります。

[ ]
RE:07657 カーソルの位置No.07659
TAKA さん 01/02/25 00:10
 
こんばんは。また、TAKA です。

>disabledrawで、マクロを実行中に、Alt+Tabで画面を切り替え、
>元に戻した場合は、秀丸は、真っ白の画面になります。
>
>これは、画面の書き換えを禁止しているからわかるのですが、
>Windowskey+Dで、ディスクトップを表示した後に、
>Alt+Tabで、秀丸にウィンドウを戻すと、画面が書き換えられています。

// テストマクロ(ここから)
disabledraw;
while(1)
{
}
endmacro;
// テストマクロ(ここまで)

[その1]
マクロの実行中ということですので、上記のような無限ループのマ
クロ実行中に確認してみました。
マクロを実行した秀丸上に別のウィンドウが重なるようにAlt+Tab
で別アプリを重ねた後、Alt+Tabで元の秀丸に戻ると、期待通り、
描画が行われませんので、ウィンドウが重なっていた場所は真っ白
になります。(秀丸の背景が白の場合)

[その2]
次にマクロ実行中にwindowskey+Dで秀丸をアイコン化させた後に、
Alt+Tabで、秀丸を元に戻すと、再描画が行われないので、秀丸は
真っ白になった状態で、これも期待通りに動作しました。

亮さんの報告では、画面が書き換えられていますということですが、
その1とその2でまったく同じ状態にならない(真っ白になる範囲
が違う)ということを言われているのでしょうか?
もしそうなら、それは仕様ということになると思います。
その2で、秀丸を元に戻すということは、「元のサイズに戻す」と
いうだけのことですので、秀丸側は再描画を行う必要があるという
ことしか分かりません。そのために、再描画を行う訳ですが、マク
ロ命令で再描画を行わない設定がされているので、何も行わずに全
体が真っ白になります。
disabledrawはマクロ実行時にのみ有効ですので、マクロが終了す
ると再描画されます。
画面が書き換えられているという表現は別のことでしょうか?
もし、再描画されないはずなのに、再描画されているとしたら、マ
クロが終了しているのではないでしょうか?

上記のマクロでマクロが絶対に終了しないようにして、テストして
みてはどうでしょうか?

[ ]
RE:07658 カーソルの位置No.07660
TAKA さん 01/02/25 00:17
 
今回の問題は、「次の秀丸も検索するのオプション」の不具合のよ
うです。(多分、Ver3.06以降でしょうね)
安定動作のためにも、Ver3.08に反映出来るようでしたら、反映を
お願いします。 > 秀丸担当さん
β3が出れば、直ぐに(24時間以内)動作確認します。

[ ]
RE:07659 カーソルの位置No.07662
さん 01/02/25 13:42
 
TAKAさんありがとうございます。

状況説明が、不足していたみたいなので、補足したいと思います。

不具合が生じるのは、無限ループ内で、描画を必要とする命令がある場合です。

// テストマクロ(ここから)
disabledraw;
while(1)
{
insert "a";
}
endmacro;
// テストマクロ(ここまで)

例えば、このテストマクロを実行中に、
windowskey+Dで秀丸をアイコン化させた後に、Alt+Tabで、秀丸を元に戻すと、
マクロで、書き換えをしている部分が描画されます。

全体が、再描画されているわけではないので、
disabledrawの機能は、発揮されているわけで、仕様かもしれないですが、、、

[ ]
RE:07658 カーソルの位置No.07663
さん 01/02/25 13:43
 
TAKAさん補足ありがとうございます。

>>もう一つ疑問に思っていることがあるので、質問させてもらいます。
>>getinistrやgetininumで、iniファイルから情報を取得するとき、
>>iniファイルが65535バイトぐらい以上の場合(実際には、
>>もう少し小さいみたいです)、それ以降の情報は、
>>取得できないのでしょうか?
>
>これは、WindowsのAPI(ウインドウズの機能を使うために用意され
>ているもの)の制限です。

やはり、Windows側の制限ですか。

>このAPIはOSごとに若干仕様が異なるものもあります。
>95や98は16ビットOSですので、16ビットで扱える65535バイト
>までになっています。
>NTは32ビットOSですので、32ビットまで扱えます。
>秀丸もこのAPIを利用していると思いますので、その制限に引っか
>かってしまいます。
>ファイルを分けるとか、OSを変えるとかしないとだめだと思います。

現在は、ファイルを複数に分けているのですが、
32ビットまで扱える32ビットOSは、魅力的ですね。

>>また、ini形式でないデータファイルから直接データを取得することは、
>>可能ですか?
>
>ini形式でないデータファイルということは、セクション名やキー
>名がないということですよね。

その通りです。

>独自のファイルということは独自でアクセスするしかありませんが、
>ファイルを開かずにファイルの中身を取得する方法はマクロ命令に
>なかったと思います。

この機能欲しいです。秀丸担当様無理でしょうか?

>ただ、似たようなことは出来ます。
>openfileに/hというステルスモード(開いても見えない状態に出来
>る)がありますので、一度開いて、gettextで文字を取得すれば、
>希望されるものに近いものが出来ると思います。

最初は、このようにしていたのですが、速度の関係上、
データベースをini形式に変更して、
getininumやgetinistrを使うようになりました。

現在は、データベースが大きくなったので、複数に分けて、
処理しています。
マクロに、さらに、データの追加、変更の機能を持たせようとし思い、
試行錯誤しています。
田楽サーバーで、iniファイルの大きさを取得し、
iniファイルを切り替えたりして、実現させようと思ったのですが、
iniファイルの65535の壁がバグならば、
バグが解消されるのを待とうかと思っていました。
複数のファイルで、管理すると、データベースの汎用性が、
損なわれてしまうので、他の方法はないものかと、
安易な気持ちで、質問してしまいました。

もう少し、マクロができてから、改めて、マクロ作者会議室で、
質問したいと思います。

[ ]
RE:07655 カーソルの位置No.07667
える さん 01/02/26 09:06
 
>もう一つ疑問に思っていることがあるので、質問させてもらいます。
>getinistrやgetininumで、iniファイルから情報を取得するとき、
>iniファイルが65535バイトぐらい以上の場合(実際には、
>もう少し小さいみたいです)、それ以降の情報は、
>取得できないのでしょうか?

Windows の制限です、昔私が fj に投稿した記録によると、
--*--*--*--
1. ファイルサイズは 64k bytes まで と制限されています。
2. 1つのセクションは 32k bytes まで と制限されています。
3. WindowsNT4/2000 ではレジストリへのマッピングがあります。
4. 上記 3. に伴って Windows95/98 と WindowsNT4/2000 では内容の書き込みに伴う
キャッシュ機能の有無が異なります。
5. 値が " で囲まれていた場合に、最も外側の " が取り除かれます。
6. 値内にある TAB 文字の扱いが Windows95/98 と WindowsNT4/2000で異なります。
--*--*--*--
というような仕様があります。
OS の違いとして重要なのは 4. とか 6. あたりです。

.INI ファイルは Windows3.1 からの残り物なので 32bit アプリケーションではレジ
ストリを利用すること、というのが Win32 のスタンスです。
尚、Win9x はレジストリの1キーに 64kb のサイズ制限があるのでこちらも注意。

[ ]
RE:07667 カーソルの位置No.07668
TAKA さん 01/02/26 10:55
 
>Windows の制限です、昔私が fj に投稿した記録によると、
>--*--*--*--
>1. ファイルサイズは 64k bytes まで と制限されています。
>2. 1つのセクションは 32k bytes まで と制限されています。
>3. WindowsNT4/2000 ではレジストリへのマッピングがあります。
>4. 上記 3. に伴って Windows95/98 と WindowsNT4/2000 では内容の書き込みに伴
>うキャッシュ機能の有無が異なります。
>5. 値が " で囲まれていた場合に、最も外側の " が取り除かれます。
>6. 値内にある TAB 文字の扱いが Windows95/98 と WindowsNT4/2000で異なります。
>--*--*--*--
>というような仕様があります。
>OS の違いとして重要なのは 4. とか 6. あたりです。

今回問題になっているサイズも、私が書いた通りOSの違いによっ
て重要ですよね。
えるさんので言えば、1番です。

私の発言

>95や98は16ビットOSですので、16ビットで扱える65535バイト
>までになっています。
>NTは32ビットOSですので、32ビットまで扱えます。

あっていますよね。
実際にNTで確かめた訳ではないのですが、人からも聞いたのですが。
NTに64kの制限はないと思うのですが。


それと、今回のサイズとは関係ないですが、気をつける内容として
挙げるなら、先頭のスペースも気をつけないといけないですよね。
"でくくるとかして。
そうでないと、先頭のスペースは取得出来ませんから。
これって、OSごとに違っていましたか?

[ ]
RE:07668 カーソルの位置No.07669
TAKA さん 01/02/26 12:53
 
95 と NT4.0 Workstationでためしてみました。

>>Windows の制限です、昔私が fj に投稿した記録によると、
>>--*--*--*--
>>1. ファイルサイズは 64k bytes まで と制限されています。
>>2. 1つのセクションは 32k bytes まで と制限されています。
>>3. WindowsNT4/2000 ではレジストリへのマッピングがあります。
>>4. 上記 3. に伴って Windows95/98 と WindowsNT4/2000 では内容の書き込みに伴
>うキャッシュ機能の有無が異なります。
>>5. 値が " で囲まれていた場合に、最も外側の " が取り除かれます。
>>6. 値内にある TAB 文字の扱いが Windows95/98 と WindowsNT4/2000で異なります。
>>--*--*--*--
>>というような仕様があります。
>>OS の違いとして重要なのは 4. とか 6. あたりです。
>
>今回問題になっているサイズも、私が書いた通りOSの違いによっ
>て重要ですよね。
>えるさんので言えば、1番です。
>
>私の発言
>
>>95や98は16ビットOSですので、16ビットで扱える65535バイト
>>までになっています。
>>NTは32ビットOSですので、32ビットまで扱えます。
>
>あっていますよね。
>実際にNTで確かめた訳ではないのですが、人からも聞いたのですが。
>NTに64kの制限はないと思うのですが。

iniファイルの先頭に700kほどの無関係データを入れて確かめた所、
95では必要なデータを取り出すことが出来ませんでしたが、NTでは
取り出せました。
さすがに4Gものデータでは試していませんが、32ビットOSで
は、32ビット(4G)(4,294,967,295)までであっていると思いま
す。


>それと、今回のサイズとは関係ないですが、気をつける内容として
>挙げるなら、先頭のスペースも気をつけないといけないですよね。
>"でくくるとかして。
>そうでないと、先頭のスペースは取得出来ませんから。
>これって、OSごとに違っていましたか?

95もNTも先頭のスペースは捨てられていましたので、OSには依存
しないかもしれませんね。

[ ]
RE:07662 カーソルの位置No.07680
秀丸担当 さん 01/02/27 17:14
 
>例えば、このテストマクロを実行中に、
>windowskey+Dで秀丸をアイコン化させた後に、Alt+Tabで、秀丸を元に戻すと、
>マクロで、書き換えをしている部分が描画されます。

再現マクロで再現できました。
それだけではなくサイズ変更だけで再現します。
調べておきます。

[ ]
RE:07660 カーソルの位置No.07681
秀丸担当 さん 01/02/27 17:14
 
>今回の問題は、「次の秀丸も検索するのオプション」の不具合のよ
>うです。(多分、Ver3.06以降でしょうね)
>安定動作のためにも、Ver3.08に反映出来るようでしたら、反映を
>お願いします。 > 秀丸担当さん
>β3が出れば、直ぐに(24時間以内)動作確認します。

TAKAさんの示される再現方法で再現できました。
これはバグです。
いつもありがとうございます。

[ ]