Written in Japanese(UTF-8)
2014.8.30
INASOFT


/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/


R-Script プログラマーズガイド(2/7)



 ここには R-Scriptを使ってレジストリ編集ツールを作りはじめる際の手助けになる文章が書かれています。
 このコーナーのトップページはこちら。

※このページのサンプルプログラム中で、表示の都合上で1行に入りきらずに改行している場合がありますが、実際にスクリプトを作るときには改行を入れないようにして下さい。R-Scriptは、基本的に行を単位にして実行を行っています。




2. rscファイルを作ってみよう


2.1 超基本事項


 まずは、rscファイルを作ってみることから始めます。
 とは言っても、ファイルの作り方、とか、編集ソフトの起動の仕方、なんてことはやりません。

 それができないと、まずはプログラミングをやるとか、レジストリの編集を取り扱うとか、そういうこと以前にパソコンに関する知識自体が足りないと思われますから。

 というわけで、パソコンに関する基本的なことがわからない場合は、まずはそっちを勉強してから、R-Scriptの勉強をしましょう。


2.2 スクリプトファイルの構成


 ファイルの構成については、R-Scriptの文法で定義されていますが、ここでは定義から覚えるのではなく、具体的な例を通して見ていくことにします。

ITEM = スクリプトの名前
INFORMATION = スクリプトの説明
ICON = アイコン
HELP = ヘルプファイル
CONTEXTID = HELPが.hlpファイルだった場合のContextID
AUTHOR = 作者名
URL = 作者のサイトのURL
CATEGORY = カテゴリ分類
TRY = ON
MUSTVARDEF = ONにすると、未初期化の変数を利用したときに警告メッセージが出る
INCLUDE = 追加読み込みファイル(複数指定可)

%%

(ここから命令群がはじまります)



%%より上が定義部で、%%より下が命令部です。
例えば、次のようにしてみましょう。
 
ITEM = 練習用スクリプト
INFORMATION = 練習用に作られたスクリプトです
HELP = TEST.TXT

%%

textout( "テストスクリプトです", "テストスクリプト" )
abort


 まずは定義部について。
 ITEMINFORMATIONは説明は不用かと思いますので説明は省略します。

 ICONは、作るのが面倒くさいので省略です。ICONで指定できるようなアイコンを作るには、アイコンファイルを作る専門のソフトウェアが必要です(Vector等に行けば、フリーで入手できるかと思います)。

 HELPには、TEST.TXTというファイルを指定しましたが、スクリプトが存在するフォルダと同じフォルダに、TEST.TXTというファイルが必要になります。これは、あらかじめ準備しておく必要があります。メモ帳などでテキスト形式のファイルを作ればよいだけですので、特に説明はいらないと思います。
 ここにファイル名が指定されていると、メインウィンドウの機能項目の一覧でアイコンを右クリックしたときのヘルプメニューが利用できます。
 ここに none と指定するか、HELPという項目自体を作らないと、編集ダイアログ上の[ヘルプ(H)]ボタンはグレイアウトします。
 ここに dynamic と指定すると、環境の状態に応じた動的なヘルプを生成できます。dhelp$()dhelps$() という2つの関数を用いてヘルプを生成していくのですが、詳しい解説は割愛します。いじくるつくーるに標準付属しているrscファイルを参照してみて下さい。

 CONTEXTIDは、HELPが.hlpファイルだった場合に利用するものなので、今回は省略します。

 次に命令部について。

 textout()関数は、メッセージダイアログを表示させるための関数です。
 1つめの引数に、文字列("または'で囲まれた部分)で、ダイアログの中に表示される文字列を指定し、2つめの引数に、文字列でダイアログのタイトルバーに表示される文字列を指定します。

 abortは、スクリプトの実行を、ここで強制的に終了させるための命令です。
 本来は、インタプリタに異常終了を伝える目的で使うのですが、今回は練習なので、特別に使うことにします。

 できあがったら、このファイルを Rnsf7.exe の置かれているフォルダに保存し、Rnsf7.exe を実行します。
 すると、一覧の中に「練習用スクリプト」という項目が追加されています。

 「練習用スクリプト」の項目をダブルクリックすると、「テストスクリプトです」というダイアログが表示されます。[OK]を押すと、5つのボタンだけが並んでいるダイアログが開くと思いますので、[キャンセル]を押して、ダイアログを閉じ、いじくるつくーるを終了して下さい。

 ここまでで、構成に関する説明は終わりです。
 以降は、このスクリプトを改造していく形で、新しいスクリプトを作っていきましょう。


2.3 文字列


 次に文字列について扱います。
 先ほども書いたように R-Script では、" または ' で囲まれた部分を「文字列」として扱います。
 例えば、
  "ABCDEFG"

 とか、
  'HIJKLMN'

 のように表されたものが文字列です。" を使っても ' を使っても、効果は同じです。

 改行コードやタブコードを文字列中に埋め込みたい場合は、エスケープシーケンス記号\を用いて、次のようにします。
  "A:\tThis is a pen.\nB:\tI am a boy."

 \tの部分にタブコードが挿入され、\nの部分に改行が挿入されます。先ほどのサンプルの "テストスクリプトです" の部分を、上の文字列と交換して、効果を確かめてみると良いでしょう。

 なお、例外として、 " 自身や ' 自身を文字列に含ませたい場合があります。
 C言語では \" や \' とすることによって含ませることができますが、R-Scriptでは、" は ' に囲ませることによって、逆に ' は " に囲ませることによって、文字列を作ります。
  'He said "I am a boy."' 


2.4 文字列変数と代入


 R-Scriptでは、変数の宣言は必要ありません。
 いきなり変数名を登場させると、それが変数として動きます。

 ここでは、文字列を代入する変数を作りたいのですが、文字列変数の名前は、次のようなルールで作ります。
 (英文字) + (英数字) + $

 例えば、
A$
とか、
HENSUU$
とか、
SC19$
などが、文字列変数として許される名前になります。なお、変数名として、大文字と小文字の別は無視されます(つまり、SC19$という変数名と、Sc19$ という変数名と、sC19$ という変数名と、sc19$ という変数名は、どれも同じであると見なされます)。

 では、文字列変数を含んだスクリプトのサンプルを示します。
 なお、以降のスクリプトは、命令部(%%より下の部分)だけを書きます。
 
A$ = "変数を使ってみます。"
textout( A$, "変数サンプル" )
abort



2.5 文字列の結合


 文字列・文字列変数同士を + で繋ぐと、文字列が結合されます。
 サンプルを示します。
 
A$ = "変数を"
B$ = "使って"
C$ = A$ + B$ + "みます。"
textout( C$, "変数サンプル" )
abort


 特殊な応用例として、
"
'
の両方を含む文字列を作りたい場合、次のようにします。

 "'abc' def" + '"ghi" jkl'


 このように、
'
を含む部分を
"
で囲み、
"
を含む部分を
'
で囲み、それらを結合すれば、
"
'
の両方を含んだ文字列を作ることができます。
 (比較的新しいバージョンのR-Scriptでは、C言語と同様に、
\"
\'
といった表記を用いる方法も使えます)


2.6 計算プログラムを作ってみよう


 R-Scriptには、計算式を書いたり、変数に値を代入する機能がありますので、それらを使ってみます。
 次のようなスクリプトを組んでみます。
 
A = 5 + 3
textout( ""+A, "計算結果" )
abort


 先ほど、文字列変数を作ったときには、変数名の後ろに$を付けましたが、後ろに$を付けないと、数値変数であるとされます。

 ここでは A という名前の変数に、5と3を足した結果を代入しています。
 "' で囲まないで数字だけを書くと、これをR-Scriptは「数値である」と認識し、「+」(たす)や「-」(ひく)や「*」(かける)や「/」(わる)や、「%」(割り算の余りの計算)などができるようにします。

 次の行では、textout() 関数でメッセージダイアログを表示していますが、メッセージダイアログの第1引数は文字列でなければなりませんから、変数 A の内容を表示するには、数値を文字列に変換しなければなりません。

 そこで、ここでは、「文字列に数値を加算すると、数値は文字列に変換され、最初の文字列の後に付け足される」というR-Scriptの特殊ルールを使い、""(空文字列)に、A(数値)を結合して、Aを文字列に変換しています。


2.7 電卓スクリプトを作ってみよう


 さて、これまでは、プログラムの最後に abort を書いてきました。
 最初、これは異常終了を伝えるためのものだと書きましたが、では、この abort を外すとどうなるでしょう。

 メッセージダイアログが表示された後に、5つのボタンだけが並ぶダイアログが表示されるようになると思います。

 実は、R-Scriptというのは、レジストリ編集ツールを制作するためのスクリプトなので、本来は、命令部でレジストリとの読み書きを行ったり、レジストリ編集ツールによくあるチェックボックスや編集ボックスの配置を行わなければなりません。

 そして、ユーザーにレジストリ編集を行わせ、その結果をレジストリに書き込んだり、ヘルプファイルを呼び出したり、などを行うためのボタンが、この5つのボタンです。
 これまでは、こういうことを全く行わないスクリプトを組んできたので、単に5つのボタンが並ぶだけになっていたわけです。

 ではさっそく、編集ボックスを持つプログラムを組むことにしましょう…と言いたいところですが、レジストリの取り扱いは次のページに譲るとして、ここでは単純な電卓スクリプトを作ることにします。
 次にサンプルを示します。
 
text( "足し算をします。" )
editbox_num( "A", 0, 0, MAXINTEGER )
editbox_num( "B", 0, 0, MAXINTEGER )
exit

:ok
A = GetEditBoxNum( "A" )
B = GetEditBoxNum( "B" )
C = A + B
textout( ""+C, "計算結果" )


 text() は、単純にダイアログ内に文字列をを配置するための関数です。引数には、ダイアログに配置したい文字列を指定します。
 editbox_num() は、数値入力用の編集ボックスを作るための関数です。
 第1引数にはID文字列を指定します。ID文字列というのは、後から編集ボックスから値を読み出したり、書き込み足りしたい場合のために、ダイアログ上に置かれる部品それぞれに付けられる名前です。
 第2引数には、最初に表示したい数値を入れておきます。
 第3引数には最小値、第4引数には最大値を入れておきます。こうすることで、編集ボックスの右側に、▲や▼のマークが付き、マウスで値を増減できます。MAXINTEGERは数値変数で、R-Scriptによってあらかじめ0xffffffff(R-Scriptが扱える最大の整数)が代入されています。
 (R-Scriptは負の整数を扱うことができません。これは、レジストリエントリの数値型がそのような仕様になっていて、それにあわせた形になっているためです)

 exit は、正常終了を表す命令です。
 これが実行されると、abort の場合と違い、レジストリ編集用の編集ダイアログが表示されます。
 (ここではレジストリは扱いません)

 さて、ダイアログが表示されたら、2つの編集ダイアログに数字を入れて、[OK]ボタンを押しましょう。
 レジストリに書き込む云々が表示されることがありますが、今回はレジストリは扱いませんが、実行は継続しますから、このまま[はい]を押します。すると、先ほどの編集ボックスに入力した数値を加算した結果が表示されるます。

 :OK というのがスクリプト中にあったともいますが、[OK]ボタンが押されたときに実行される命令群を、この:OKに後ろに書きます。このように : で始まる文字列を「ラベル」と言い、プログラムの流れを制御するために使われます。

 GetEditBoxNum() は、数値編集ボックスから、入力されている数値を得ます。
 ここでは、得られた数値を A という変数と B という変数に代入しています。

 C = A + B で、計算を行い、textout() 関数で、出力をしています。
 ダイアログの扱いはだいたいこんなところです。次はいよいよ、レジストリを扱っていきましょう。


 戻る 次へ

 目次
 R-Scriptについて
 プログラマーズガイドの目次


※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。

■このページに関するご意見をお待ちしております → フィードバックページ

/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/