overwriteで質問No.00650
YK さん 99/07/17 10:47
 
みなさん今日は。YKと申します。
overwriteの動作に関して、質問があります。

overwriteを下の(重ね書きしたい文)に実行したときに、重ね書きする内
容によっては「こんにちは」の位置がずれてしまいます。ずれないよう
にすることは、できないでしょうか。

////こんにちはYKです。(重ね書きしたい文)

overwrite "////";//「こんにちは」の位置がずれる
endmacro;

overwrite "////";//ずれない
endmacro;


現状は、つぎのようにしています。もっと巧い方法がありませんか。
よろしくお願いします。

        moveto 6, y;
        beginsel;
        moveto 0, y;
        delete;
        insert "////";

[ ]
RE:00650 overwriteで質問No.00651
きいろいまふらあ さん 99/07/17 14:20
 
きいろいまふらあと申します。
やや長いです。

YK wrote on Sat, 17 Jul 1999 10:47:13 +0900
> overwriteの動作に関して、質問があります。

これはマクロコマンドというよりも、むしろそもそも、
上書きモードでの動作の仕様の問題ではないでしょうか?

・全角文字の位置に半角文字を入力すると
 入力された半角文字+半角空白に置き換わる。
 「あいうえお」の「あ」の位置に「a」を入力すると「a いうえお」となる。

・直後が半角文字である半角文字の位置に全角文字を入力すると
 二つの半角文字が入力された全角文字に置き換わる。
 「abcde」の「a」の位置に「あ」を入力すると「あcde」となる。

・直後が全角文字である半角文字の位置に全角文字を入力すると
 半角文字が入力された全角文字に置き換わる。
 「aいうえお」の「a」の位置に「あ」を入力すると「あいうえお」となる。

> 現状は、つぎのようにしています。もっと巧い方法がありませんか。

上の仕様が変わらないという前提で、
具体的になさりたい処理の内容によってそれに適したマクロは違ってくると思います。
例えば
・今いる行の頭の*文字を別の特定の文字列に置き換えたい。
・今編集しているファイルの全ての行の頭の*文字を別の特定の文字列に置き換えた
い。
・今編集しているファイルの特定の文字列で始まっている行の頭の*文字を
 別の特定の文字列に置き換えたい。
・今編集しているファイルの全ての行の頭の*文字を特定のルールで並び替えたい。
などなど....

というわけで(長くなりましたが(^^;)、
具体的に処理したいことがあるなら→その内容をお書きになっては?
上の仕様が気に食わない(^^;なら→2番会議室、かな???
(マクロだけ仕様が変わるのって変ですもんね(^_^))

まふ

[ ]
RE:00651 overwriteで質問No.00652
YK さん 99/07/18 11:29
 
きいろいまふらあさん、コメントありがとうございました。YKです。

現在作っているマクロの中で、行の最初の数桁を同じ桁数の別の文字に
変更する必要が有るのですが、動作スピードの改善ができないかと思っ
て、質問しました。重ね書きができれば、deleteしてからinsertする現
在のやり方よりも、速くなると思ったのですが。

きいろいまふらあさんのコメントで仕様は解りました。重ね書きされる
方の文字構成を調べてまで、overwriteする気はないので、この部分の変
更はやめることにしました。

(仕様に関してのどうこうなんて、おそれおおいことは、これぽっちも考
えていません。)

ありがとうございました。

[ ]
RE:00652 overwriteで質問No.00653
安久津 さん 99/07/18 19:24
 
こんにちは、安久津です。

>て、質問しました。重ね書きができれば、deleteしてからinsertする現
>在のやり方よりも、速くなると思ったのですが。
選択中に insert を使うと上書きになりませんか?

moveto 6, y;
beginsel;
moveto 0, y;
// delete;
insert "////";

ではでは。

[ ]
RE:00653 overwriteで質問No.00655
YK さん 99/07/19 10:15
 
安久津さん、こんにちは。YKです。

コメントありがとうございました。
deleteの削除、さっそく試してみました。ところが、1ステップ減ったに
しては、以外にも時間短縮できていませんでした。

そこで、処理時間がどうなっているか、確認してみました。
以下にその報告をします。

下のマクロを実行してみました。その結果は、次の通りです。単位ミリ秒
#tm1,#tm2,#tm3,#tm4,#tm5,#tm6,#tm7,#tm8
delete有り1767,1699,3616,1597,3683,4008,5679,778
delete無し1737,1632,3706,1692,3781, 779,8402,761

結論、deleteを削除した場合は、insertの文がdeleteで行った処理を代
行するようだ。私の環境で、42秒程度かかる今回の処理での削減時間は、
約0.5秒だった。

以上、御参考までに。(自分の参考かな)

//−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

////こんにちはYKです。

disabledraw;
#tm1=0; #tm2=0; #tm3=0; #tm4=0; #tm5=0; #tm6=0; #tm7=0;
#tm0=tickcount; #tm82=tickcount;
while(#i<10000){#tm11=tickcount; #tm1=#tm11-#tm82+#tm1;#tm12=tickcount;
#i=#i+1;#tm21=tickcount; #tm2=#tm21-#tm12+#tm2;#tm22=tickcount;
moveto 6, y;#tm31=tickcount; #tm3=#tm31-#tm22+#tm3;#tm32=tickcount;
beginsel;#tm41=tickcount; #tm4=#tm41-#tm32+#tm4;#tm42=tickcount;
moveto 0, y;#tm51=tickcount; #tm5=#tm51-#tm42+#tm5;#tm52=tickcount;
//  delete;
#tm61=tickcount; #tm6=#tm61-#tm52+#tm6;#tm62=tickcount;
insert "////";  #tm71=tickcount; #tm7=#tm71-#tm62+#tm7;#tm72=tickcount;
#tm81=tickcount; #tm8=#tm81-#tm72+#tm8;#tm82=tickcount;
}                                                          
#tm9=tickcount;
message str(#tm9-#tm0)+"//"+str(#tm1)+"/"+str(#tm2)+"/"+str(#tm3)+"/"+str(#t
m4)+"/"+str(#tm5)+"/"+str(#tm6)+"/"+str(#tm7)+"/"+str(#tm8);
enabledraw;
endmacro;

[ ]
RE:00655 overwriteで質問No.00657
安久津 さん 99/07/19 13:09
 
こんにちは、安久津です。

>deleteの削除、さっそく試してみました。ところが、1ステップ減ったに
>しては、以外にも時間短縮できていませんでした。
全くその通りでした。(^^;

ではでは。

[ ]