EOF行についてNo.00207
きき さん 98/09/10 18:39
 
 どうもききともうします。
簡単な事で申し訳ありませんが以下の事を教えて下さい。
1.最後の行かどうかを判断したいのですが、
     down;
     if(!result)goto endmacro;
 とするとEOFだけの行も処理してしまいます。これをEOFだけの行は処理しないで終
了させたいのですがどうすれば良いでしょうか。

2.マクロ処理中にダイアログボックスを出して処理中ですと表示させたいのですが
できないのでしょうか。現在はtitleを使用していますが、分かり難いのでダイ
アログを出したいと考えています。

3.ダイアログボックスで、氏名、ふりがな、住所、電話番号などを書かせ、その値
を取り込みたいのですができないのでしょうか。inputだと1つずつしか出来ないよ
うですが、一度に5つの枠を出し、OKボタンで処理する下図のような事は出来るので
しょうか。
   例
   +--------------------------+
   |   MENU-TITLE                    |
   +--------------------------+
   |            +---------------+  |
   | 1.名前   |                        |  |
   |            +---------------+  |
   |            +---------------+  |
   | 2.住所   |                        |  |
   |            +---------------+  |
   |   +-------+   +--------+     |
   |   |   OK     |    | CANCEL|     |
   |   +-------+   +--------+     |
   +--------------------------+
まだ、マクロの勉強中で良く分かりませんが宜しくお願いします。

[ ]
RE:00207 EOF行についてNo.00208
杉浦 まさき さん 98/09/11 00:33
 
ききさん、こんばんは。
 杉浦 まさき です。

>1.最後の行かどうかを判断したいのですが、

現在のカーソル位置にある文字の文字コードを取得する
 code というキーワードを使えばできると思います。

   ex.
   down;
   if( (!result) || code == eof ) goto endmacro;

>2.マクロ処理中にダイアログボックスを出して処理中ですと表示させたいのですが
>できないのでしょうか。
>3.ダイアログボックスで、氏名、ふりがな、住所、電話番号などを書かせ、その値
>を取り込みたいのですができないのでしょうか。

これらは標準のマクロでは無理ですが、
 「秀まるおのマクロサーバ」というものを使えばできます。
 #使い方はそちらのマニュアルを参照して下さい。

#そういえば…私家版マクロサーバ(機能強化版)ですが、
 そろそろ公開する予定です。
##マニュアルが…めんどくさ〜(^^;。


[ ]
RE:00208 EOF行についてNo.00209
きき さん 98/09/11 09:52
 

> 杉浦 まさき です。
いつもお世話になっています。

>現在のカーソル位置にある文字の文字コードを取得する
> code というキーワードを使えばできると思います。
出来ました。

> 「秀まるおのマクロサーバ」というものを使えばできます。
ダウンロードしました。まだ良く分かっていないのですがサンプルを見ながらやって
みたいと思います。

>#そういえば…私家版マクロサーバ(機能強化版)ですが、
> そろそろ公開する予定です。
上記マクロサーバと何処が違うんでしょうか。

>##マニュアルが…めんどくさ〜(^^;。
私も会社の連中にいちいちインストールの方法などを書いて配布しているので少しは
分かります。人間なんて千差万別ですから。

あとひとつ質問なんですけど、現在の位置が70カラム内かどうかを判断させて、ブ
ランクを入れようとしているのですが以下のようにすると元々70カラムである行は
1つブランクを入れてしまいます。
lineend;
while ( x < 70 ) insert " ";
これじゃ間違っているんでしょうか。
度々で済みませんが宜しくお願いします。

[ ]
RE:00207 EOF行についてNo.00212
ひろ さん 98/09/11 23:09
 
 ききさん今日は、ひろです。
> 1.最後の行かどうかを判断したいのですが、
down;
if(!result||code==eof)goto endmacro;
で出来ると思います。
> 2.マクロ処理中にダイアログボックスを出して処理中ですと表示させたいのですが
 これはおそらく出来ないと思います。
 誰かご存じの方、私にも教えてください(^^)。
> 3.ダイアログボックスで、氏名、ふりがな、住所、電話番号などを書かせ、その値
> を取り込みたいのですができないのでしょうか。inputだと1つずつしか出来ないよ
> うですが、一度に5つの枠を出し、OKボタンで処理する下図のような事は出来るので
 これは恐らく、「秀まるおのマクロサーバ」を併用すれば出来ると思います。

[ ]
RE:00209 EOF行についてNo.00213
杉浦 まさき さん 98/09/12 04:44
 
ききさん、こんばんは。
 杉浦 まさき です。

>>#そういえば…私家版マクロサーバ(機能強化版)ですが、
>> そろそろ公開する予定です。
>上記マクロサーバと何処が違うんでしょうか。

色々できることを追加してます。
 具体的には

 1)「ファイルを開く」や「フォルダの指定」コモンダイアログを
   出して、選択されたファイル名やフォルダ名だけを取得する。
 2)文字列操作系のコマンドの追加(&2バイト文字対応)
 3)ダイアログのコントロールにコンボボックスや
   「(ファイルやフォルダの)参照」ボタンを追加
 4)コントロールの有効・無効の切り替え機能を追加
   (無効にする=グレー表示にして入力を受け付けなくする)
 5)その他諸々の仕様変更…(オリジナルの動作を再現できない物も含む(^^;)

 です。
 #ちなみに、名前は「田楽(でんがく)サーバ」になりました(^^;。
 ##昔のマクロサーバ(Win3.1板)が別名「とーふサーバ」だったことに
   対するシャレのつもり…なんですが、誰が気付くんだよ>自分(^^;

>あとひとつ質問なんですけど、現在の位置が70カラム内かどうかを判断させて、ブ
>ランクを入れようとしているのですが以下のようにすると元々70カラムである行は
>1つブランクを入れてしまいます。
>lineend;
>while ( x < 70 ) insert " ";

 x というキーワードは、現在のカラム位置の左端を 0 とした値を持っているので、
 既に70カラムある行の右端にカーソルがある時は
 x の値は… 70 ですね、あれ(^^;?
 あ、もしかして折り返し桁数が 69 とかになってません?
 golineend は見た目の行の右端にカーソルを持っていくだけなので、
 折り返し桁数が 69 だと golineend 後の x の値は 69 になりますが…。
 #で、そういう場合は golineend2 を使えばよろしいかと…。


[ ]
RE:00212 EOF行についてNo.00214
杉浦 まさき さん 98/09/12 04:56
 
ひろさん、こんばんは。
 杉浦 まさき です。

>> 2.マクロ処理中にダイアログボックスを出して処理中ですと表示させたいのですが
> これはおそらく出来ないと思います。
> 誰かご存じの方、私にも教えてください(^^)。

うーん、よく考えるとマクロサーバ使っても難しいですね(^^;。
 で、全ての場合についてできるわけではないですが、
 while ループかなんかで処理をするような場合については
 以下の様な感じで何とかなるんじゃないでしょうか?
 #ちょっと危険な処理のような気もしますが(^^;。

//-----------------------------//
// original code
while( 1 ){
  // 処理の内容
}
endmacro;
//-----------------------------//

//-----------------------------//
// 「処理中です」ダイアログ表示版
run "macserv.exe";
ddeinitiate "HideMacroServer", "AllService";
ddepoke "newdialog", "20,秀丸マクロ";
ddepoke "newcontrol", "text,,処理中です";
ddepoke "newcontrol", "defbutton,,中止";
ddepoke "notify", "10";
$item = "";
ddestartadvice "dlgresult", $item;
ddeexecute "dialog lastactiveparent";
while( 1 ){
  ddewaitadvice $item, 10;
  if( $item != "" ) break;
  // original code の処理の内容
  // 終わったら break でループを抜ける
}
ddeexecute "enddialog";
ddestopadvice "dlgresult";
ddeexecute "exit";
endmacro;
//-----------------------------//

ちなみに、書いただけでテストはしてないので(^^;、
 使用する時は各人の責任で行って下さい。>使う人


[ ]
RE:00214 EOF行についてNo.00215
ひろ さん 98/09/13 23:56
 
 杉浦 まさきさん今日は、ひろです。
> うーん、よく考えるとマクロサーバ使っても難しいですね(^^;。
 <中略>
>  #ちょっと危険な処理のような気もしますが(^^;。
 確かにこの要領で出来るでしょうが、点滅して目に悪そう(^^)。それに処
理が遅くなるでしょうね。
 今まで dialog で表示したいと思わなかったので、考えたことも無かっ
た(^^;。

[ ]
RE:00215 EOF行についてNo.00217
きき さん 98/09/14 13:49
 
まさきさん、ひろさん、御返答ありがとうございました。

> 確かにこの要領で出来るでしょうが、点滅して目に悪そう(^^)。それに処
>理が遅くなるでしょうね。
いろいろと考えていただきありがとうございます。
素人目には、タイトルの所が変わっても良く分からないかと思ったもので、ダイアロ
グを表示させればいやでも分かると思ったからなのです。
 全置換でもダイアログが表示されてスピードアップとキャンセルボタンが出てくる
ので出来るのかなと考えてしまいました。これだと適当な所でマウスを押してしまっ
てマクロをキャンセルしますかという表示も出ないし、今処理しているんだなという
事も分かって良いかなと考えたのです。
 また、突飛な質問をするかもしれませんが宜しくお願いします。

[ ]
RE:00217 EOF行についてNo.00218
杉浦 まさき さん 98/09/15 02:15
 
ききさん、ひろさん、こんばんは。
 杉浦 まさき です。

>> 確かにこの要領で出来るでしょうが、点滅して目に悪そう(^^)。それに処
>>理が遅くなるでしょうね。

今さっきテストしてみましたが、
 別に点滅はしなかったです(^^;。
 #処理は確かに遅くなるはずですが(^^;。
 ##ddewaitadvice のタイムアウト時間分はロスがあるので。

というわけで、本当に必要なら試してみては? >ききさん

#あと宣伝モード(^^;ですが、
 田楽(でんがく)サーバ Ver.0.01β を下記のページにて
 テスト公開中ですので、よろしければ試してみて下さい。

 http://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver/index.html

>秀ネットの会員はユーザIDを入力してください。
そうでない人はリターンキーを押してください。

Enter User-ID:xxxxxxxx@niftyserve.or.jp
Input Password:
秀ネットへようこそ

前回ログイン時間: 1998/09/15 11:56:55

    HideNet System Version 0.73 (1998/09/10)
    (c) 1997,98 by 有限会社サイトー企画


 1.秀ネットの紹介              2.掲示板
 3.フォーラム                  4.秀ネットチャットルーム[0人]
 5.会員情報                    6.オンラインマニュアル
 7.秀ネットフォーラム          8.シェアウェア暗証問い合わせ
 E.秀ネットを終了
[ ]