めざらさんの clbd2tng.def でウェブから英単語を単語帳に記録 しています。一方、英単語の意味を検索するのに、文太さんに作っ てもらった eiwa3.def を使って、英辞郎を検索しています。 clbd2tng.def で記録したばかりの英単語(clbd2tng.def で利用 しているメモリに載っている英単語)を、 そのまま eiwa3.def で 検索したいです。eiwa3.def の入力窓で↑なりを押すと、ヒストリ ーに clbd2tng.def のメモリーに載っている英単語が出るようにす ることができるでしょうか? clbd2tng. def では pr を使ってお り、eiwa3.def では pw を使っているようなので、どこかで pr=pw のような式を入れたらいいんですかね? いっそ、この2つの作業(単語帳への記録と意味調べ)をいっし ょにできるといいんですが、この2つのマクロを同時に動かすこと ができるでしょうか? (クリップボードに記録した単語を tango. txt に追加すると同時に、英辞郎を検索し、その結果を表示すると いうこと)。 2つのマクロを載せます。 ======================================= = clbd2tng = by H_ear #if 0 クリップボードの単語追加 #endif * mad for vz! 1 ^\ "" ?. &s #E &?("Clppst.exe /W tango.tmp") #m #[ mx[+, #O "tango.tmp" #m #> Je[=mi[-, #m Je], mi], ;必ず改行が必要 mb-, #A "c:\a\tango.txt" #m (s)?'y' mr-, #C mx], :z ; ---- exit ---- &d #] . * ======================================= === EIWA3.def by Bunta ===; * Macro 50 ^IQ "EIWA3" ?. &j(0) fr+, &g("【英辞郎】",20) &Cr fr-, (r<s)? {&j(-1).} ss2, p="ABCDEFGHIJKLMNOPQRSTUVWXYZ", ; 01234567890123456789012345 &Sf(p,pw.0) (r==0)? {&j(-1) &m("何か変だぞ").} q=r-p, (q>=0 && q<=3)? {a="AD", >a} (q>=4 && q<=9)? {a="EJ", >a} (q>=10 && q<=15)? {a="KP", >a} (q>=16 && q<=25)? {a="QZ", >a} :a #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\eiwa\EIJI58%s.TXT >c:\eiwa.txt",pw,a) #m #[ mx[+, #O "c:\eiwa.txt" #m mx], &j(-1) &d #] . *
> clbd2tng.def では pr を使っており、いえ,使ってませんよ。 メモリには載ってます。Windows が使うクリップボードですけど。 でも pw に入れるのは簡単です。clbd2tng だけを修正すればよいので。 同時(…と言うか順にですけど)にやるというのは,eiwa3 の方も改造しな ければいけないので面倒です。それに,英辞郎を引かなくてもよいことだって あるでしょうから,pw にだけ入れればよいでしょう。 = clbd2tng = by H_ear #if 0 クリップボードの単語追加 単語は pw に入れて辞書引きに再利用可 2007/09/24変更 #endif * mad for vz! 1 ^\ "" ?. &s #E &?("Clppst.exe /W tango.tmp") #m #[ mx[+, #O "tango.tmp" #m ;; #> Je[=mi[-, #m Je], mi], ;この行を ;; #> ;ここで分断して(*)に替えます ;; Je[=mi[-, #m Je], mi], ;こちらはそのまま #b #> mp[, ps[=pw, #G ps], mp], ;(*)#2286と同じですね Je[=mi[-, #m Je], mi], ;必ず改行が必要 mb-, #A "c:\a\tango.txt" #m (s)?'y' mr-, #C mx], :z ; ---- exit ---- &d #] . * これで pw を利用しているマクロで再利用できます。 ところで英辞郎の辞書を @,A〜Z の27個に分割すると検索が速くなるけど…。
> 昔、VZで英辞郎の辞書テキストを分割しようと思ったら、
> ファイルが巨大すぎてうまくいかなくて、断念してました。
> でももう1つの問題は分割したファイルが大きすぎると、
> VZで処理できない(大きすぎるとかいわれる)ことでした。
> 巨大ファイル移動用のマクロもあるようですが、
> 昔、試したときは失敗しました。
> この頃はクリップボードを使うマクロは巨大なブロックでも
> 処理できるようです(コピーの場合。削除は失敗。)。
> とらじさんのclppstのおかげで、ありがたいことです。
> Bigblock.defのご利用の版、アップしてもらえないでしょうか?ここに貼り付けてみます。36のプリフィクスの ^O が使用可能でなければ, 他のキーにしてください。 ----------^ BIGBLOCK.DEF ( date:1996-10-15 time:07:41 ) ----< cut here ======== bigblock.def by I.KAMIMURA ======== 【巨大ブロック対応・自動コピー】 * M 36 ^OB "" ?. &m(" 他画面自動コピー : ^Y or ^KK") 37 ^Y "Big Block Cut" ?. c=#y, >01 ; #y…行・ブロック削除 38 ^KK "Big Block Copy" ?. c=#k, >01 ; #k…行・ブロック記憶 1: (mb)?? { ; 非ブロックモードか? #W (mb)?? { ; 参照画面は非ブロックモードか? #W &o(c). ; 通常実行 } } (wt)?? { ; ◆全画面モードか? &#Y(4) ; ◆縦分割 &a(" OK ") ; ◆「OK か? (Y/N)」 (r<1)?. ; ◆'N' [ESC] なら終了 } ; ◆ &s b=mb, ; ブロックモードを b に代入 #W #M #W ; #M…ブロック挿入位置をマーク :A &m(" Copy ...%d",ln) ; 処理経過をメッセージ (mb)? { &o(c) #W #i ; ブロックを複写(巨大ブロック対応) (ek)?? #B ; ブロックの最後へ #W >A } #W mb=0, #b #U (ek)? #B #b ; ブロックの範囲を明示 &m("") &d ; &#Y(0) ; 全画面モード cm=48, r=b, ; 直前のコマンド・返り値を調整 q=mg..2..3+8,mg..2..3-, ; zibaku &Sc(pu,"&q&Zd(q).") &e(pu) ; by Tomo * ======== End of bigblock.def ======== ----------$ BIGBLOCK.DEF ( lines:41 ) ----------------------< cut here> 英辞郎を解凍したら121.5Mでした。すごいですね。へええ。大きくなりましたね。わたしが使わせてもらっている v5.8 は全部 で 78MB ですから,50MB ちかく大きくなっているんだな。 まぁ,固有名詞が 増えたのでしょうけどね。
> ^YはVZ.DEFのオリジナルにありますけど、これに置き換えて
> 日ごろ、使っちゃうということですか?
EIWA3.DEFを改変してみたんですが、検索できません。すべて EIJIB.TXTを読みにいきます。どこが悪いのか、教えてください。 C:\DICにEIJIA.TXT,EIJIB.TXTなどの辞書ファイルをアルファベット 順に作ってあります。 === === EIWA4.def by Bunta ===; * Macro 50 ^IQ "EIWA4" ?. &j(0) fr+, &g("【英辞郎】",20) &Cr fr-, (r<s)? {&j(-1).} ss2, p="ABCDEFGHIJKLMNOPQRSTUVWXYZ", ; 01234567890123456789012345 &Sf(p,pw.0) (r==0)? {&j(-1) &m("何か変だぞ").} q=r-p, (q=0)? {a="A", >a} (q=1)? {a="B", >a} (q=2)? {a="C", >a} (q=3)? {a="D", >a} (q=4)? {a="E", >a} (q=5)? {a="F", >a} (q=6)? {a="G", >a} (q=7)? {a="H", >a} (q=8)? {a="I", >a} (q=9)? {a="J", >a} (q=10)? {a="K", >a} (q=11)? {a="L", >a} (q=12)? {a="M", >a} (q=13)? {a="N", >a} (q=14)? {a="O", >a} (q=15)? {a="P", >a} (q=16)? {a="Q", >a} (q=17)? {a="R", >a} (q=18)? {a="S", >a} (q=19)? {a="T", >a} (q=20)? {a="U", >a} (q=21)? {a="V", >a} (q=22)? {a="W", >a} (q=23)? {a="X", >a} (q=24)? {a="Y", >a} (q=25)? {a="Z", >a} :a #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\EIJI%s.TXT >c:\eiwa.txt",pw,a) #m #[ mx[+, #O "c:\eiwa.txt" #m mx], &j(-1) &d #] . *
最初の (q=0) という評価は,q に 0を代入しているので, 絶対に真になる ことはありません。 次の (q=1) という評価は,q に 1を代入しているので, 絶対に真になり,続くブロックが必ず実行されます。(q=2) 以下が評価される ことは絶対にありません。等号で比較するなら == を使いましょう。 なお,英単語の先頭文字のファイルをオープンすればよいので,このような 面倒なやり方は必要ありません。 とりあえずこんな感じでどうでしょう。エラー処理は最小限です。 izgrep のオプションが -it になっているところに注意。 なお, アルファベット以外で始まるものを EIJI@.txt に出力しておくと, 内容を全部引けることになります。 50 ^IQ "Eijiro" ?. &j(0) &g("【英辞郎】",20) &Cr (r|1+1)??. ;[ESC]&[CR] &Su(pw) c=pw.0, ;<c>hr (c<'A' || c>'Z')?c='@', #E &?("C:\TOOL\Izgrep -it $"^■%s$" C:\DIC\EIJI%c.TXT >C:\EIWA.TXT",pw,c) #m #[ mx[+, #O "C:\EIWA.TXT" #m mx], &d #] . * わたしは前後も参照したいので,VZ でオープンしてから検索をかけてます。
> IZGREPにファイル名を指定しているんで、ファイルをオープンしていないと思いますが。エディタでオープンするのと GreP でオープンするのと,同じ用語で説明し てしまったので解りにくかったですね。 GreP で指定したファイルは「オープ ン」されるんですよ。画面上で表示されないからと言ってオープンしていない わけではないのです。どんなアプリケーションでもファイルをオープンせずに 処理はできないです。表示しない分だけ速度で有利ですね。これは VZ でもサ イレントにすると処理が速くなるのと同じです。> アルファベット以外で始まる単語が相当あるので、それをどうしたらい> いか、考えていました。EIJI@.txt にするのは、いい手ですね。文字コードで考えても,@(40h)は A(41h)の直前です。 ファイル名に使 える文字だし,ファイル名順にきちんと並ぶので処理上の文字の扱いも楽にな ります。> めざらさんも、そういう感じのマクロをお使いということでしょうか?同じ様なマクロは色々な人が作っていると思います。それぞれの事情に応じ て動作が微妙に違うし,機能も多彩だと思います。わたしのは遅い LX で使う ことを前提としていたので,ファイル分割型ですね。ただ,和英部分が未完成 です。(笑) ----------^ EIJIRO.DEF ( date:2003-12-25 time:05:38 ) ------< cut here = Eijiro.def = by H_ear #if 0 アルファベット+αで27分割した英辞郎を検索 入力文字が記号・アルファベットで前方一致,それ以外はファイル指定中間一致 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 、〜瑤 ★要カスタマイズ%1 #endif * mad for vz! 1 ^\ "" ?. (tc-wc)??{ &m(6) . } (mb)?{ mp[, ps[=pw, #G ps], mp], (mb)?{ mb-, (1) }?{ (0) } }?{ ;&m("通常は英和前方一致検索/漢字入力で全ファイルを対象にGREPします.") &m("英和として前方一致検索します.") &g("英辞郎検索") &m("") (r|1+1)??. ;[ESC]&[CR] } &Su(pw) c=pw.0, ;<c>hr ; &Jk(c) ; (r)?>01 ;grep (c<'A' || c>'Z')?c='@', &m("オープンしています.") ;LXだもん &s mx+, #O ;#Rでは余計に開くかも &?("%sei\eiji58%c.txt",pi,c) ;★要カスタマイズ%1 &d #m ;&dは意外に効かない(^^; (s==4)?{ 'n' #[ } mx-, ;オープンできなければ0:に飛ばせて終了 (r+1)>?{ >> >f } #^ ;オープン中なら先頭へ :f &Sn(pw) (r<2)?>z ;1文字なら検索しない RX[+, ew[-, ec[+, mp[=2, ps[=pa, &Sp(pa,"^■%s",pw) vp..39-, ;検索文字列の再設定強制 &s &m("検索しています.") ;LXだもん #c c=r!, ;cは使い回し/失敗==0 成功!=0 ps], mp], ec], ew], RX], :z (c)?{ &m("") }?{ &m(19) } ;19:見つかりません &d #] . 00: &m(6) . ;6:オープンできません 01: ; ---- grep で和英かも ---- * [Variables] c <c>hr 先頭文字/#c返り値! [Buffers] pw 入力文字列 pa as ps [ps] [History] 2003/12/16 0.10 英和検索 2003/12/25 0.20 ブロック起動で取得後自動検索 [Notes] LXだと分割しても数十秒もかかっちゃうんだよね〜 ファイルの先頭を検索しないが仕様でいいじゃん ----------$ EIJIRO.DEF ( lines:59 ) ------------------------< cut here
> 冒頭の単語が検索できないというのは、冒頭に改行だけの行
> を入れるか、■だけの行を追加したら、うまくいかないかな。
> 英和辞書を和英用に引くってのができると
> いいけど、これはむずかしそうですね。