global変数

TextRunRun では、変数はグローバル変数でなければ、意味がありません。

一時的に使う変数だとしても、 global 宣言をした変数でなければ、使用できません。

宣言の仕方は普通に、AutoHotkeyの書式と同じです。

global  [変数名]
global  [変数名]  :=  [変数] か [式や値や関数]

V_var1 などの変数

グローバル宣言をせずとも使える変数として、

V_var1 から V_var50
の変数があるので、グローバル宣言を省略したければ、変数はこれらを使うとよいです。

補足

V_var1 から V_var50 の変数はただのグローバル変数です。

後、初期値は カラでなく、
?? になっています。

グローバル宣言をして使う際

以降は global を宣言して使う変数に対していくつか注意点があるのでそれを述べていきます。

まず、 global 宣言で変数を宣言するのは、起動時の処理にしておくことを勧めます。

それも、起動時の処理の最も早い段階でしておくことを勧めます。

宣言した変数ですが、少し不安な部分があります。
そのことについて説明します。

global宣言より前に変数を使ってしまった場合

global で宣言するより前にその変数名が使われてしまった場合です。

その場合、その変数名は不完全な変数となり、
その後に global 宣言したとしてもグローバル変数として使えなくなります。

たとえば、 if 文で変数を使ったとします。

if( varName == False ){

この varName の変数が
global  varName
を実行した後に使われている分にはいいですが、

それをせずに使った場合、
つまり、 global 宣言するより先にこの処理の方が実行されてしまった時、
varName の変数は、ローカル変数として位置づけされてしまいます。

if 文の中では、ローカル変数としかみなされなくなります。
結果 変数として利用できなくなります。

この場合、後々 global 宣言をしても効果はありません。

if 文の処理上で varName がローカル変数扱いになる事は、再起動しないかぎり続きます。

このミスを防ぐため、 global で変数を宣言するのは
起動時に実行するアイテム の中の最初の方に実行させておくことを勧めます。

TextRunRun上の内部処理で使っている変数と被る

そもそも TextRunRun は作者のブランボンが個人的に使う事を前提に作ったものなので、
グローバル変数とローカル変数の名前が被らない様にしようという対策をして作っていません。

ユーザーがglobal宣言をして変数を使用するものである、
という事を考慮して作り始めたものでもないため、
TextRunRun のローカル変数は ユーザーが使う変数名と被ってしまう危険が高いです。

もし、 TextRunRun のローカル変数と変数名が被った場合、不具合というか、思わぬ動作をしてしまう事が考えられます。

いつか直そうと思いますが、しばらくはローカル変数名を変えたりせず、放置したままになると思います。

TextRunRun のローカル変数でよく使われているのは

  • str
  • text
  • num
  • returnValue
  • type
  • OutputValue
  • arg
  • arg1からarg9
  • com
  • com1からcom10

これらの変数は使っているので、グローバル宣言をしないようにした方が良いと思います。

AutoHotkey でよく使われる OutputValue も使っています。

TextRunRun のグローバル変数は

  • glob_
  • gGlob_

を先頭に使っている変数名が多いです。

これらを先頭にした名前の変数も使わないようにした方が良いでしょう。