■ 質問はここへ ■

前へ 次へ
No. 213 (210へのコメント)投稿者: かぶねこ HP日付: 2001/09/14 17:15:57
題名 : Re:ツールバーなどの表示速度について

こういうのはメーリングリスト向けの話題だと思います、が、現在メーリングリ
ストが不調で、参加して作者に質問してください、とも言えない状況です。

いま、メーリングリストの全過去ログに QGrep をブロック検索で「表示 and 遅」
でかけてみました。「常駐ウイルスソフトの影響」というのがひっかかって
きました。Virus Scan やウイルスバスターのリアルタイム監視モードとの相性
が悪いようです。

念のため最新版を使ってみてください。それでもダメならやっぱり作者に対応し
てもらえるメーリングリストで相談なさるしかないかもしれません。

No. 214投稿者: kenmotu日付: 2001/09/14 22:25:24
題名 : 頻度カウントマクロ(?)のお願い

いつもお願いばかりで申し訳ありません。現在編集中のファイルで使われ
ている文字列が何回現れるかを調べるマクロを希望しています。操作とし
ては:

(1) カウントしたい文字列をハイライトする
(2) マクロを実行する
(3) 使用されている個数を表示する。

というものです。

現在、検索と置換のボックスに同じ文字列を入力して、[全置換] で置換
回数を確認しているのですが、これをもっと簡単にできたらと思った次第
です。

ご尽力いただければ幸いです。

p.s. qx@mxe.mesh.ne.jpにメールを送ってもどうしても受け付けられないので
こちらを見つけて質問させていただきました。
どうぞよろしくお願いいたします。

========
KENMOTU Kensaku
kecxo@muzika.forum.ne.jp

No. 215 (214へのコメント)投稿者: CINEPHILE日付: 2001/09/15 00:18:17
題名 : Re:頻度カウントマクロ(?)のお願い

>いつもお願いばかりで申し訳ありません。現在編集中のファイルで使われ
>ている文字列が何回現れるかを調べるマクロを希望しています。操作とし
>ては:
>
>(1) カウントしたい文字列をハイライトする
>(2) マクロを実行する
>(3) 使用されている個数を表示する。

 文字列の使用回数を調べるだけならば、次のマクロで実行できると思います。

proc main
dim srchstr$, c, n
srchstr$ = inputbox$("検索する文字列を入力してください。", " * 文字列の使用回数を調査 * ", "", "")
if srchstr$ = "" or srchstr$ = chr$(&H1B) then exit proc
@MoveFileTop
c = len(srchstr$)
if left$(@TextCr$(@Line), c) = srchstr$ then
n = 1
end if
do while 1
@FindStringBottom srchstr$
if @@SearchFound = 0 then exit do
n++
loop
call msgbox(srchstr$ + " は " + cformat$("%d", n) + " 個見つかりました。", 0, " * 文字列の使用回数を調査 * ")
end proc

 文字列の強調表示に関しては、よださんの公開なさっている「単語を強調表
示するマクロ」を使うことができます。次の場所からダウンロードできます。

http://www.valley.ne.jp/~yod/sippitu.html

 一つのマクロで実行することも可能でしょうが、よださんのマクロはすでに
公開されているものなので、とりあえずこのまま挙げておきます。

# マクロに何か問題がありそうでしたら、ご指摘をお願いいたします。>マク
# ロ作者の方々

>p.s. qx@mxe.mesh.ne.jpにメールを送ってもどうしても受け付けられないので
>こちらを見つけて質問させていただきました。
>どうぞよろしくお願いいたします。

 メーリングリストは現在調子が悪いようです。いずれ復旧してからご参加く
ださい。

No. 216 (215へのコメント)投稿者: CINEPHILE日付: 2001/09/15 00:29:00削除済 返信
題名 : Re^2:頻度カウントマクロ(?)のお願い
No. 217 (215へのコメント)投稿者: CINEPHILE日付: 2001/09/15 00:46:49
題名 : Re^2:頻度カウントマクロ(?)のお願い

 ちょっと訂正です。

 @Redraw を入れたのと、検索結果を表示するメッセージボックスで、検索文
字列をダブルクオートで囲むようにしました。

'文字列の使用回数を調査
proc main
dim srchstr$, c, n
srchstr$ = inputbox$("検索する文字列を入力してください。", " * 文字列の使用回数を調査 * ", "", "")
if srchstr$ = "" or srchstr$ = chr$(&H1B) then exit proc
@Redraw = 0
@MoveFileTop
c = len(srchstr$)
if left$(@TextCr$(@Line), c) = srchstr$ then
n = 1
end if
do while 1
@FindStringBottom srchstr$
if @@SearchFound = 0 then exit do
n++
loop
@Redraw = 1
call msgbox("""" + srchstr$ + """" + " は " + cformat$("%d", n) + " 個見つかりました。", 0, " * 文字列の使用回数を調査 * ")
end proc

No. 218 (217へのコメント)投稿者: CINEPHILE日付: 2001/09/15 01:39:43
題名 : Re^3:頻度カウントマクロ(?)のお願い

>(1) カウントしたい文字列をハイライトする
>(2) マクロを実行する
>(3) 使用されている個数を表示する。

 ちょっと趣旨を誤解していました。

 @Redraw = 0 の前の行までを、次のように変更するとご希望通りではないか
と思います。

proc main
dim srchstr$, c, n
if @Select = 1 or @Select = 2 then
@BlockClipboardCopy
srchstr$ = clipboard$()
else
srchstr$ = inputbox$("検索する文字列を入力してください。", " * 文字列の使用回数を調査 * ", "", "")
if srchstr$ = "" or srchstr$ = chr$(&H1B) then exit proc
end if

 まだ慣れないもので、たびたび訂正してすみません。

No. 219 (214へのコメント)投稿者: かぶねこ HP日付: 2001/09/15 01:59:31
題名 : Re:頻度カウントマクロ(?)のお願い

そうなんです、メーリングリストの調子が悪いようで……。

すでに CINEPHILE さんがマクロをアップしてくださってますが、もっと原始的
に、全置換の個数確認を自動実行するだけだと、こんなのになります。ステータ
スバーに「n 個置換しました」と表示されるのを見落とさないで読む必要があり
ます。

proc main
dim n, s$
if @Select = 0 then exit proc '選択してないと実行しません
s$ = @TextSelect$
@Select = 0
n = @@FindFromTop
@@FindFromTop = 1
@UndoBlock = 1
@ReplaceString2 s$, s$, 1
@UndoBlock = 0
@@FindFromTop = n
end proc

そういえば、この置換個数をマクロで参照できたらいいのに、と以前から思って
たんですが、できないんですよね。なんか方法あるのかもしれませんが……。

No. 220 (219へのコメント)投稿者: kenmotu日付: 2001/09/15 03:06:17
題名 : Re^2:頻度カウントマクロ(?)のお願い

CINEPHILE さん、かぶねこさん。マクロを作ってくださり、ありがとうご
ざいました。おかげで目的を達成することができました。

ただ、わがままを言わせていただくと、マクロ実行後、カーソルが、マク
ロを実行した位置に戻ってくれるとさらにありがたいかなあ、と思った次
第で・・・

お手すきのときにでもご一考いただければ、とても幸せです。

No. 221 (220へのコメント)投稿者: CINEPHILE日付: 2001/09/15 03:54:51
題名 : Re^3:頻度カウントマクロ(?)のお願い

>ただ、わがままを言わせていただくと、マクロ実行後、カーソルが、マク
>ロを実行した位置に戻ってくれるとさらにありがたいかなあ、と思った次
>第で・・・

 これでどうでしょうか。

proc main
dim srchstr$, c, n, x, y
if @TextSelect$ = "" then
srchstr$ = inputbox$("検索する文字列を入力してください。", " * 文字列の使用回数を調査 * ", "", "")
if srchstr$ = "" or srchstr$ = chr$(&H1B) then exit proc
else
srchstr$ = @TextSelect$
end if
x = @BytePos
y = @Line
@Redraw = 0
@MoveFileTop
c = len(srchstr$)
if left$(@TextCr$(@Line), c) = srchstr$ then
n = 1
end if
do while 1
@FindStringBottom srchstr$
if @@SearchFound = 0 then exit do
n++
loop
@BytePos = x
@Line = y
@Redraw = 1
call msgbox("""" + srchstr$ + """" + " は " + cformat$("%d", n) + " 個見つかりました。", 0, " * 文字列の使用回数を調査 * ")
end proc

 @BlockClipboardCopy を使うとクリップボードに入るので、かぶねこさんの
投稿を参考にして、@TextSelect$ に変更しました。実は、このようなプロパ
ティがあることを知らなかったので、以前からちょっと悩んでいました。

# 途中からマクロの勉強のようになってしまいましたが、やはりそつのない仕
# 事をするのは容易ではありませんね。普段はすでに出来上がったマクロを使
# わせていただく側なので、なかなか気がつきませんが。

No. 222 (221へのコメント)投稿者: CINEPHILE日付: 2001/09/15 05:53:40
題名 : Re^4:頻度カウントマクロ(?)のお願い

 これで最後だといいのですが……。

 マクロの終了前にカーソル位置を復元するところで、先に行を指定しないと
位置がくるってしまうことがあるようです。

 したがって、

@Line = y
@BytePos = x

のように、順番を入れ替えてください。

次へ
現在の既読番号は 0  既読を


メールアドレスを表示するにはURLの後ろに &m=bb6a9a3f をつけてください。
ユーザー フォーラム一覧

http://www2k.biglobe.ne.jp/~araken/
http://0ban.com/araken/