インプットボックスで全角数字を半角数字No.16970
電脳 さん 04/03/26 16:07
 
現在、インプットボックスを使って入力した全角数字を半角数字に変換するマクロを
作っています。
入力するインプットボックスが表示したとき、半角数字を入力すれば、処理をしてく
れるのですが、全角数字を入力した場合処理が行われません。

やりたい作業は、インプットボックスで全角数字を入力した半角数字に変換をしたい
です。
全角数字を半角数字に置換すれば動くと思うのですが、・・・処理が解らず投稿しま
した。

アドバイスをお願いします。


$s = input( "入力する行数を入力してください" );

#end   = val($s);


[ ]
RE:16970 インプットボックスで全角数字をNo.16971
ENCODINGSHIFTJIS さん 04/03/26 17:26
 
1.作業用の編集面を確保できるのなら
そこに入力をinsertして変換できます。

2.DLL で拡張関数も使えます。(JRE32.dll も使えるかも)
--------------- ZH.mac
// 田楽DLLのロード
loaddll hidemarudir + "\\DengakuDLL.dll";
if (!result) {
 message "DLL をロードできませんでした。";
 endmacro;
}
if (!dllfunc("BRE_LOAD", hidemarudir + "\\BREGEXP.DLL")) {
    message "BREGEXP.DLL が見つかりません";
    freedll;
    endmacro;
}

//  $str を $ptn の指定に従って置換したものを出力します。
$ptn = "tr/0-9/0-9/gk"; // 全角 → 半角
$str = "0123456789";

$s = dllfuncstr("BRE_TRANS", $ptn, $str);
menu "result: " + $s + "\n";
#r = dllfunc("BRE_FREE"); // 使い終わったら BRE_FREE() で開放

END:
freedll;
endmacro;
------------------

3. 秀丸マクロで 関数 leftstr(s1,n1 ) 文字列の左側部分
 で左から1文字ずつちぎって変換。10行くらいでしょうか?

[ ]
RE:16971 インプットボックスで全角数字をNo.16972
でるもんた さん 04/03/26 17:45
 
でるもんたです。

> 3. 秀丸マクロで 関数 leftstr(s1,n1 ) 文字列の左側部分
>  で左から1文字ずつちぎって変換。10行くらいでしょうか?

これは、leftstr() よりは ascii() を使ったほうが早いかも。

$s = input( "入力する行数を入力してください" );
$t = "";
while ($s != "")
{
 #c = ascii($s);   //先頭の文字のSJISコード
 if ('0'<=#c && #c<='9')
  $t = $t+str(#c-'0');
 else
  $t = $t+char(#c);

 if (#c >= 0x100)
  $s = midstr($s,2,999);
 else
  $s = midstr($s,1,999);
}

message $t;

[ ]
RE:16970 インプットボックスで全角数字をNo.16973
白雲斎 さん 04/03/26 18:36
 
白雲斎と申します。

「かな漢字変換の切り替え」をすると言うのは頓珍漢かな!?

#ime = imestate;
if( #ime ) imeswitch;  // IMEがONならOFFに
    :
$s = input( "入力する行数を入力してください" );
#end   = val($s);
    :
if( #ime ) imeswitch;  // 元に戻す
endmacro;

__________________________________________________
Do You Yahoo!?
http://bb.yahoo.co.jp/

[ ]
RE:16970 解決 3.採用 ENCODINGSHIFTJISNo.16974
電脳 さん 04/03/26 18:44
 
ENCODINGSHIFTJIS さん でるもんた さん 、情報ありがとうございます。

ENCODINGSHIFTJIS さん へ

DLLを入れた環境がなかったので確認できませんでしたが、見た感じ難しいプログラ
ムですね。詳しく調べてやってみます。



でるもんた さん へ

私が処理をしたい内容のプログラムみたいです。
プログラムを追加してテストしてみました。無事処理をしてます。
全角や半角が混じった場合でも処理ができるんですね。

今回の件で、もう少し文字コードの変換の仕方を調べて投稿すべきだった内容ですね。
基本から勉強しなおしてみます。

大変勉強になりました。ありがとうございした。

[ ]
RE:16973 imeを処理前にON OFFするんですNo.16975
電脳 さん 04/03/26 19:00
 
白雲斎さん へ

なるほど・・・インプット処理前にimeをoffにするわけですね。
こんな技もあるんですね。
これだと最初に半角数字を入れる事ができますね。
インプット画面中にimeを起動した場合は駄目みたいですが、前投稿者のでるもんた
さんのプログラムと組み合わせると良い処理プログラムになりますね。

勉強になります。情報ありがとうございました。

[ ]