最後の文字で実行。その1

「テキストの文字で自動的に実行」の設定についてです。

これの「最後の文字で自動的に実行する」の改良について記入しようと思います。

改良と言っても、 TRR 自体を改良していくのではなく、
TRR のスクリプトを使って「最後の文字で自動的に実行する」の改良みたいな事をしたいと思います。

以後、「最後の文字で自動的に実行する」の括りの事を 最後の文字で実行 と略して記入していきます。

今回挙げるスクリプトは以下のリンクから全てダウンロードできます。

lastWordMakeStorage.zip

( 16 KByte )

最後の文字で実行 ですが、

  • fromFileNameと同じ様にファイルから登録できるようにするかどうか
  • 項目数を増やすかどうか

この 2つの事を出来るようにしようかどうか考えた事があります。

fromFileNameアイテム などを作れるのと同じ様に、この「テキストの文字で自動的に実行」の設定にも fromFileName から設定できる様にしようかと考えた事があります。

でも、 TRR のスクリプトで似たようなものを作る事が十分可能だと思い、 TRR 自体で作る必要は無いと思っています。

fromFileName でファイルから設定する、という事が出来たら幾分便利に使えるんじゃないかと思ったのですが、
タブも 25 までしか設定しようがない仕様ですし、
ファイルから登録できるようにするだけなので、簡単な アイテム を用意するだけで可能だと判断しました。

それで、 fromFileName から登録する似たようなものを作ったので紹介しておこうと思います。

項目数を増やすかどうかに関してですが、
今の状態では、 一つのタブ内に 10個設定でき、 タブは 25 までの合計 40個までしか設定できません。

増やしてもよかったのですが、現時点では増やすのではなく 設定を切り替える事ができる様にして
「キーになる文字」などを切り替えながら使うようにするやり方で代用した方がいいと思っています。

このページでは、 TRR のスクリプトを使って 最後の文字で実行 の設定を切り替えるスクリプトの例を紹介しようと思います。

最後の文字で実行 の設定ですが、
O_lastWordKey2_1O_lastWordScript2_1 などの設定用の変数に代入して設定する事が可能です。
ただ、このページではこれらの変数の代入を記入して設定する方法ではなく、
F_lastWordSetFirstNumAllFromAllLineStr( )
の関数を使って設定する方法を説明します。

F_lastWordSetFirstNumAllFromAllLineStr( ) には、最低でも 2つの引数を指定します。

1つめは設定するタブの番号を指定します。

2つめは文字列を指定するのですが、リスト型の文字列を指定します。

[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]

この様な文字を引数に指定します。
とはいえ、このような文字を直接関数に指定するというのではなく、
このリストを記入したファイルを作って、そのファイルから読み込むという使い方を基本的にはします。

または、このリストをスクリプトにした 二行以上のアイテム を登録しておき、
F_getItemScript( itemName )
から取得するなどの方法があります。

つまり、先程のような 10行のリスト型の文字を記入したファイルを作り、
FileAppend を使って読み込み、
F_lastWordSetFirstNumAllFromAllLineStr( ) の関数に、
設定する 最後の文字で実行 のタブの番号と、
ファイルを読み込んだ変数を指定して使います。

FileAppend, valueName, [ファイルパス]

これを使って、 valueName という変数名にファイルの文字を読み込んだ後に、

F_lastWordSetFirstNumAllFromAllLineStr( 2, valueName )

を使えば、 最後の文字で実行 の タブ210項目に
「キーになる文字」と「実行する処理」が設定されます。

読み込ませるファイルは、先程の様な 10行で記入したファイルを指定しないと意味がありません。

この F_lastWordSetFirstNumAllFromAllLineStr( ) の関数は、他にも指定する引数があったりしますが、詳しい内容はここでは説明しません。

細かい内容は以下のページの方で確認してください。

辞書
F_lastWordSetFirstNumAllFromAllLineStr( )

この関数の意味さえ分かれば、この後に説明する事は簡単な内容だと思います。

fromFileNameと同じ様なものを作る

まず、 fromFileName と同じ様な事が出来るようにしたものの例を挙げます。

つまり、ファイルを作ってそのファイルから登録するタイプのものです。

ファイルには以下の様な書式のファイルを作り、それが起動時に設定されるようにしたものです。

[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]
[キーになる文字] = [実行処理]

この様なファイルを一つのタブにつき 1つ。
最大で 4つ用意して使う仕様のものです。

早速、以下に作ってみたスクリプトを載せます。

これを実現するために作る アイテム4つ だけですので、続けて挙げるようにします。

lastWord_start1_globalLastWord.trr
global mylast1_startFolder = %A_ScriptDir%\trrEvery\user\lastWordUser
global mylast1_startSetFileName = \startTab
global mylast1_categoryExtension = .txt
global mylast1_tmpCategory
global mylast1_tmpCategoryNum
global mylast1_tmpReadLineNum
global mylast1_tmpReadFile
global mylast1_tmpAllLineStr
global mylast1_fileType
global mylast1_tmpFolder
lastWord_checkAndMakeFolder.trr
mylast1_tmpFolder = %B_itemArg1%
mylast1_fileType := FileExist(mylast1_tmpFolder)
if(mylast1_fileType == ""){
    FileCreateDir, %mylast1_tmpFolder%
}
%--
lastWord_setStartFileName.trr
mylast1_tmpCategoryNum = %B_itemArg1%
mylast1_tmpCategory = %mylast1_startSetFileName%%mylast1_tmpCategoryNum%%mylast1_categoryExtension%
mylast1_tmpReadFile = %mylast1_startFolder%%mylast1_tmpCategory%
IfNotExist, %mylast1_tmpReadFile%
{
    return
}
FileRead, mylast1_tmpAllLineStr, %mylast1_tmpReadFile%
if( mylast1_tmpAllLineStr == "" ){
    F_errorOutput("以下のファイルの文字を取得できない`n" . mylast1_tmpReadFile)
    return
}
F_lastWordSetFirstNumAllFromAllLineStr(mylast1_tmpCategoryNum, mylast1_tmpAllLineStr)
%--
1_lastWord_startLastWordAll.trr
lastWord_start1_globalLastWord
lastWord_checkAndMakeFolder %mylast1_startFolder%
lastWord_setStartFileName 2
lastWord_setStartFileName 3
lastWord_setStartFileName 4
lastWord_setStartFileName 5

以上の 4つの アイテム を作ります。

startup の中に、 1_lastWord_startLastWordAll を実行させるファイルかフォルダを作れば、起動時に使用できます。

一番最初に宣言した変数が、設定用のファイルを置くフォルダを表しています。

%A_ScriptDir%\trrEvery\user\lastWordUser

このフォルダを設定用のファイルを置くフォルダにしています。

fromFileName と同じ物を作るわけなので、 fromFileName のフォルダ内に作ってもよかったのですが、
とりあえず user フォルダの中に作るようにしています。

使い方の説明をします。

startTab2.txtstartTab3.txtstartTab4.txtstartTab5.txt の名前のファイルを用意します。

名前の中にある数字が、 最後の文字で実行 のタブの番号と同じ意味を持ちます。

これらのファイルを先程の、

%A_ScriptDir%\trrEvery\user\lastWordUser

のフォルダ内に配置します。

設定するタブの番号のファイルだけを置いてもよいです。
startTab2.txt のファイルがあれば、 タブ2 を設定します。
このファイルが無ければ、 タブ2 は何も扱いません。

ファイルには、先程から例に挙げてきた 10行のリスト型の文字を記入しておきます。

リスト型の文字のファイルのルール

リスト型の文字のファイルのルールを説明しておきます。

一行が 最後の文字で実行 の一項目を意味しています。

= を記入する必要があります。

= の左側に「キーになる文字」を、
右側に「実行する処理」を記入します。

これを 10行記入する仕様です。

コメント

左端に #[ を記入すると、その行はコメント文のような扱いになります。
ただし、コメント文にしたとしても一行として扱われます。

#[ は同じ様で違う意味を持ちます。

# を左端にした場合、その行の部分の
「キーになる文字」と、「実行する処理」の部分にはカラの文字が設定されます。

一行に = のみを記入していた場合も、同じくカラを設定した事になります。

[ を左端にした場合、その行の部分の
「キーになる文字」と、「実行する処理」の部分は何も設定せずスルーします。
つまり、前に設定した内容があった場合、その設定がそのままの状態で残ります。

前後にスペースを置くなら

「キーになる文字」と、「実行する処理」の文字の前後のスペースは取り除かれます。

あえて「キーになる文字」の前後にスペースを付けたい場合は
< > の文字で囲むという方法があります。

前方の < と後方の > は削除されるルールになっています。
その場合は、その中にあるスペースは残ったままにできます。

さっきの 4つの アイテム の説明に戻ります。

2番目の アイテムlastWord_checkAndMakeFolder についてですが、これは単純にフォルダ内を作るスクリプトです。 フォルダが存在しなかった場合、フォルダを作ります。

3番目の アイテムlastWord_setStartFileName が先程説明した F_lastWordSetFirstNumAllFromAllLineStr( ) の関数を使ったスクリプトです。

タブの番号を引数に指定する仕様になっています。
その番号を合わせたファイルパスを変数に代入して、
そのファイルパスが存在すればファイルを読み込み、
ファイルに文字が記入されているなら
F_lastWordSetFirstNumAllFromAllLineStr( ) を実行しているといったものです。

ファイルが無ければ何もしません。
つまり、あえて設定したくないタブは、その番号のファイルを用意しなければよい事になります。

難しいスクリプトは無かったと思います。
これで fromFileName の様に、ファイルを使ってそれから登録ができるようなものが出来ているのでとりあえずは使えると思います。

%A_ScriptDir%\trrEvery\user\lastWordUser

のフォルダの中に startTab2.txtstartTab3.txtstartTab4.txtstartTab5.txt のファイルを作って、 10行のリスト型の文字を記入すれば使えるようになるので気に入った方は使ってみてください。