マクロを使って,ユニコードで検索したいNo.04874
ktaka さん 05/10/22 11:26
 
日本語と外国語混在のデータの単語検索です.
アクセント符号のついた文字を含む単語を検索するとき,メニューバーから検索を使
うと正常に動きます.しかし,以下のマクロを使うとビープ音がでるだけです.ユニ
コードでの検索の設定を教えてください.
初めてのマクロなので,書き方すら正しいのか否か分かりません.
よろしくお願いします.
KTAKA

-----------------
//ファイルのオープン JRくん http://homepage2.nifty.com/jr-kun/hidemaru_qa/hmindex0.html
$openFileName="d:\\haku\\seiwa_uc8.txt";
if($openFileName!=filename){
    #findWind = findhidemaru($openFileName);
    if(#findWind>0)setactivehidemaru #findWind;
    else openfile $openFileName;
}

//単語の検索
 $str = input("検索単語を入れなさい.");
 gofiletop;
 searchdown "^/" + $str + "( |,)", regular, nocasesense, nohilight;
 if( ! result )  beep;

 enabledraw;
 endmacro;
------------------

[ ]
RE:04874 マクロを使って,ユニコードで検No.04875
ENCODINGSHIFTJIS さん 05/10/22 17:27
 
input("検索単語を入れなさい.");
では、アクセント符号のついた文字は入らないようです

$m=input("ウムラウト","\u00D6");
menu $m;
endmacro;

クリップボードからでは検索できました
beginclipboardread;
searchdown getclipboard;
endmacro;

が正規表現文字列を作るために、文字列式とかするとダメかも
¥u 形式に変換は難しそう

[ ]
RE:04875 マクロを使って,ユニコードで検No.04876
ENCODINGSHIFTJIS さん 05/10/22 17:35
 
UTF-8 の編集面で 正規表現文字列を組み立て
クリップボードに入れて

beginclipboardread;
searchdown getclipboard,regular;
endmacro;

では、動くかもしれません。

[ ]
RE:04876 マクロを使って,ユニコードで検No.04880
ktaka さん 05/10/23 07:40
 
コメントありがとうございました.
キーボードから検索窓に特殊文字を入力できるのに,それが検索できないのはとても
残念です.

以下のご説明,現在の私には理解不能なので,[Alt]+[s] の検索機能を使用すること
にしました.

>UTF-8 の編集面で 正規表現文字列を組み立て
>クリップボードに入れて

ひとつ教えていただければありがたいのですが,

$str = input("検索単語を入れなさい.");
gofiletop;
searchdown "^/" + $str + "( |,)", regular, nocasesense, nohilight;
if( ! result )  beep;

この画面で [Esc] を押す,あるいは検索がヒットしない場合に,カーソルが飛んで,
半角スペースがひとつ入るのですが,それを止めるにはどうしたらいいのでしょうか?
よろしくお願いします.
KTAKA

[ ]
RE:04880 マクロを使って,ユニコードで検No.04881
ktaka さん 05/10/23 07:50
 
発言に間違いがありました.

カーソルが不特定の単語に飛んで,スペースが入るのは [Esc] を押したときでした.

>この画面で [Esc] を押す,あるいは検索がヒットしない場合に,カーソルが飛んで,
>半角スペースがひとつ入るのですが,

KTAKA

[ ]
RE:04880 マクロを使って,ユニコードで検No.04882
白雲斎 さん 05/10/23 09:19
 
こんにちは、白雲斎です。

末尾のマクロではダメですか!?
検索ダイアログにウムラウト等を入力すれば検索出来ました。


$openFileName = "d:\\haku\\seiwa_uc8.txt";
if( !existfile($openFileName) ) endmacro;   // 存在確認
if( $openFileName != filename )
{
    #findWind = findhidemaru($openFileName);
    if( #findWind > 0 ) setactivehidemaru #findWind;
    else openfile $openFileName;
}

//単語の検索
gofiletop;
setsearch "^/( |,)", 0x0010 | 0x2000;
find2;
endmacro;

[ ]
RE:04882 マクロを使って,ユニコードで検No.04884
ktaka さん 05/10/24 23:24
 
白雲斎さん
こんにちは.

以下の解決策,有り難うございました.無事に,特殊文字を検索することができるよ
うになりました.

//単語の検索
gofiletop;
setsearch "^/( |,)", 0x0010 | 0x2000;
find2;
endmacro;

ただ,ひとつ難点なのが,いちいち /( の間にカーソルをポインターで動かさなけれ
ばならないことです.left 5; なんてやってみてもエラーになります.なんとかなり
ませんでしょうか.
よろしくお願いします.
KTAKA

[ ]
RE:04884 マクロを使って,ユニコードで検No.04885
白雲斎 さん 05/10/25 06:45
 
こんにちは、白雲斎です。

>ただ,ひとつ難点なのが,いちいち /( の間にカーソルをポインターで動かさなけれ
>ばならないことです.left 5; なんてやってみてもエラーになります.なんとかなり
>ませんでしょうか.

「検索窓」から検索する今回の方法では、なんともなりませんね。
他には、回りくどい末尾のマクロ以外は思いつきません。

---------------------------------------------------------------
$openFileName = "d:\\haku\\seiwa_uc8.txt";
$buffName = "<buff>.$buff$";

if( !existfile($openFileName) ) endmacro;
if( basename == $buffName ) goto DoFind;
newfile;
changename $buffName;
insert "** 検索キーワードの入力 **\n";
insert "5行目の“#”の直後に入力すること!\n";
insert "入力確定後に、再び同一マクロを実行\n";
insert "【注意】メタ文字をメタ文字として取り込めない\n#";
insertfix "\n";
clearupdated;
endmacro;

DoFind:
#buffHandle = hidemaruhandle(0);
movetolineno 1, 5;
if( code != '#' ) goto ERR;
right;
beginsel;
golineend2;
$keyword = gettext(seltopx, seltopy, selendx, selendy);
if( $keyword == "" ) goto ERR;

#findWind = findhidemaru($openFileName);
if( #findWind > 0 ) setactivehidemaru #findWind;
else openfile $openFileName;
closehidemaruforced #buffHandle;

gofiletop;
searchdown2 "^/" + $keyword + "( |,)", regular, nohilight;
endmacro;

ERR:
message "検索キーワードの読み取りエラー!";
endmacro;

[ ]
RE:04885 マクロを使って,ユニコードで検No.04896
ktaka さん 05/10/27 20:41
 
白雲斎さん

こんにちは.
マクロを作ってください,有り難うございました.

実は使い方が理解できないでいました.実行すると,使い方が親切に表示されている
のに,それが理解できませんでした.
やっと今日,分かり,検索することが出来ました.
5万行の辞書が快適に使えます.ありがとう.
心よりお礼申し上げます.
KTAKA

[ ]