過去の桐井戸端BBS (桐ver.8) |
2882 | 登録プリンタを調べて変更する一括処理を教えて! | kaz | 1999/10/11-20:16 |
みなさま こん**わ kazともうします。 一括処理中に 登録されているプリンタをすべて調べて それをポップアップで表示し 選択してプリンタ変更できる こんな一括処理を教えてください。 初心者の方々に桐を使ってもらう必要上 是非実現したいのですが よろしくお願いいたします。 | |||
2883 | Re: | 悲しげ | 1999/10/11-21:53 |
記事番号2882へのコメント どもっ、kazさん、 私はcmdで次のような方法でやっています。(v7.*〜v8) *------------------ 名札 プリンタ変更 *------------------ &PRNT=#桐プリンタ名,&PRNTs="",&i=1 繰り返し 条件(#ウィンドウズプリンタ名(&i)="") 繰り返し中止 &PRNTs=&PRNTs+","+#ウィンドウズプリンタ名(&i) &i=&i+1 繰り返し終了 &PRNTs=#sstr(&PRNTs,2),&j=#対応番号(&PRNTs,&PRNT) メニュー2 &j,&j,(18,48),"プリンタ指定([Esc]で無変更)",&PRNTs 条件(&j=0) 手続き終了 プリンタ #ウィンドウズプリンタ名(&j),終了状態=&終了 手続き終了 | |||
2884 | Re: | kaz | 1999/10/12-00:26 |
記事番号2883へのコメント 悲しげさん ありがとうございました。 何度見返しても,ため息が出ます。なるほどっ!!! ★の行の意味がわかりません。 >*------------------ >名札 プリンタ変更 >*------------------ ★>&PRNT=#桐プリンタ名,&PRNTs="",&i=1 >繰り返し > 条件(#ウィンドウズプリンタ名(&i)="") 繰り返し中止 ★> &PRNTs=&PRNTs+","+#ウィンドウズプリンタ名(&i) > &i=&i+1 >繰り返し終了 ★>&PRNTs=#sstr(&PRNTs,2),&j=#対応番号(&PRNTs,&PRNT) >メニュー2 &j,&j,(18,48),"プリンタ指定([Esc]で無変更)",&PRNTs >条件(&j=0) 手続き終了 >プリンタ #ウィンドウズプリンタ名(&j),終了状態=&終了 >手続き終了 是非是非,ご教授下さい。 | |||
2894 | Re: | 悲しげ | 1999/10/12-22:30 |
記事番号2884へのコメント どもっ、kazさん、 >★>&PRNT=#桐プリンタ名,&PRNTs="",&i=1 > >繰り返し > > 条件(#ウィンドウズプリンタ名(&i)="") 繰り返し中止 >★> &PRNTs=&PRNTs+","+#ウィンドウズプリンタ名(&i) > > &i=&i+1 > >繰り返し終了 >★>&PRNTs=#sstr(&PRNTs,2),&j=#対応番号(&PRNTs,&PRNT) > >メニュー2 &j,&j,(18,48),"プリンタ指定([Esc]で無変更)",&PRNTs > >条件(&j=0) 手続き終了 > >プリンタ #ウィンドウズプリンタ名(&j),終了状態=&終了 > >手続き終了 &PRINTとは、桐で現在設定してあるプリンタ名ひとつを受ける変数の つもりです。 &PRINTsとは、プリンタ名の複数計を示す意味でsを付けました。日本 語で云えば、「プリンタ群」とでもなりましょうか。これはメニュー に表示させるためにカンマで区切った文字列群を意図しています。 繰り返しループ内では、Winに登録してあるプリンタ名を、登録順にひ とつづつ(空振りするまで)、カンマを挟んで、変数&PRINTsにどんど ん連結しています。 その結果、この変数の中味は、例えば次のようになります。 &PRINTs=",LP-1500,LP9600F,LBP880,PM770C,BJF600" これだと、最初にカンマがあってうまくないので、繰り返しループを 終わってから、部分列関数で2文字目以降を取り出しています。 &j=#対応番号(&PRNTs,&PRNT)は、桐で現在設定してあるプリンタをメニューの 初期値にしたいので、そのプリンタがプリンタ文字列群の何番目に当たるのかを 対応番号関数で取り出しています。 こんなところでいかがでしょう。 | |||
2895 | Re: | kaz | 1999/10/12-22:53 |
記事番号2894へのコメント 悲しげさん こん**わ 昨日から何度ものぞいて待っておりました。ありがとうございます。 ご説明はおよそ理解できました。 &PRNT=#桐プリンタ名,&PRNTs="",&i=1 とか &PRNTs=#sstr(&PRNTs,2),&j=#対応番号(&PRNTs,&PRNT) の様に,変数=のあと , で区切っての書式そのものがいまいち理解できません。 代入コマンドを簡単に記述する書式なのでしょうか? どこかにこの説明があるのでしょうが,私にはとんと???です。 そのあたりを今一度ご教授下さい。 | |||
2899 | Re:「代入」コマンドの記述方法 | 悲しげ | 1999/10/13-10:51 |
記事番号2895へのコメント どもっ、kazさん、 > &PRNT=#桐プリンタ名,&PRNTs="",&i=1 とか >の様に,変数=のあと , で区切っての書式そのものがいまいち理解 >できません。代入コマンドを簡単に記述する書式なのでしょうか? 正しくは 代入 &PRNT=#桐プリンタ名 代入 &PRNTs="" 代入 &i=1 のように書くのかもしれませんね。ただ代入コマンドの「代入」の字句は 省略できます。どこに説明してあるかは知りませんが、皆さんこのように 書いているので、私も真似しています。 それと、代入コマンドは、カンマを挟んで1行内に追記できます。一括処理では1行づつ 実行して行くそうですから、まとめられるものは1行に追記した方が、複数行に記述するよりも、 処理速度が幾分上がるらしいです。 カンマ区切りで1行に連記して使う頻度が高いものは、この代入と置換だと思います。 少なくとも私はそのようにして使っていますが、その説明がどこにあるかも、 すいません、私は知りません。 | |||
2900 | Re: | kaz | 1999/10/13-11:50 |
記事番号2899へのコメント 悲しげさん こん**は 納得いきました。本当にありがとうございました。 | |||
2922 | 「代入」と「置換」コマンドの記述方法 | 佐田 守弘 | 1999/10/16-23:06 |
記事番号2899へのコメント ●置換コマンドの場合 置換コマンドでは、コマンド1回実行すると、表ファイルを先頭から最終行まで順 に項目値を書き替えて行きます。 もし1項目ずつ置換を行うコマンドを複数行記述すると、この読み書き動作が置換 コマンドの数だけ繰り返されます。 一方、1つの置換コマンドに複数の項目を列記した場合には、それらを同時に書き替えます。 表ファイルを読み書きする操作は時間が掛かる操作なので、1回の読み書きで必要な項目を 全て置換してしまった方が、トータルとしての速度が上がるわけです。 私のテストでは、一度に置換する項目が増えてもほとんど処理時間に影響せず、置換コマンドの 実行回数を増やすと、ほぼそれに比例して時間が増える様です。 ただし、これは大きな表を置換する時の話です。桐はページバッファを使っていて、 読み書き中のページを含めて数ページをメモリ上のバッファにおいて作業をしています。 このため、バッファに収まってしまう程度の小さな表では、どちらの方法で行って もあまり時間差が出ません。 ●代入コマンドの場合 代入コマンドの場合には、メモリに対して操作を行います。このため、複数の代入コマンドに分けても、 あまり処理時間には影響しないと思います。 複数行に分けると、コマンド名を解析する時間がわずかに増えます。しかしこれはほとんど無視しうる 程度でしょう。 佐田KS-00119 | |||
2925 | Re: | kaz | 1999/10/17-13:09 |
記事番号2922へのコメント 佐田さん ありがとうございました。 私のデータ数は約1000件ぐらいになる予定です。 今のところ200件程度ですから 1項目の置換ですから2秒程度かかっておりまして 実用上ほとんど差し支えございません。 大いに参考になりました。ありがとうございます。 |