#Warn

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

#Warn [v1.0.95.00+][編集]

このページの訳はかなり怪しいです。あまり信用しないように。
エラーを示している可能性がある、特定条件時の警告を有効/無効にする。例えば、入力ミスまたはグローバル宣言が見つからない場合。

#Warn [, WarningType, WarningMode]

Parameters[編集]

引数名 説明
WarningType 有効/無効にする警告の種類。 省略時は All
UseUnsetLocal
UseUnsetGlobal
変数の値が未割り当てのまま読み込まれた場合または VarSetCapacity で初期化されている場合に警告を表示。変数が空であることを意図している場合、この警告を抑制するために空の文字列を割り当てる。

This is split into separate warning types for locals and globals because it is more common to use a global variable without prior initialization, due to their persistent and script-wide nature. For this reason, some script authors may wish to enable this type of warning for locals but disable it for globals.

#Warn
;y := ""  ; This would suppress the warning.
x := y     ; y hasn't been assigned a value.
UseEnv 環境変数が自動的に空のスクリプト変数の代わりに使用されるときに警告を表示。これは環境変数の名前が予期せずにスクリプトで使用される変数と一致する場合に発生する。この警告は変数がアクセスされたときに発生するがスクリプトで #NoEnv が有効なら発生することはない。(複数の理由により推奨される。)
#Warn
;#NoEnv             ; Add this if "temp" is not intended to be an environment variable.
;EnvGet temp, TEMP  ; This would copy the environment variable's value into the script variable.
temp := ""            ; Despite this line, temp still seems to have a value.
MsgBox % temp         ; This accesses the environment variable named "TEMP".
LocalSameAsGlobal スクリプト実行開始前に、グローバル変数と同じ名前を持つそれぞれの宣言されていないローカル変数の警告を表示。変数がローカルであることを意図していた場合、local x または static y の宣言は、警告の抑制に使用することができる。
#Warn
g := 1
ShowG() {         ; The warning is displayed even if the function is never called.
    ;global g   ; <-- This is required to access the global variable.
    MsgBox % g    ; Without the declaration, "g" is an empty local variable.
}
All WarningModeにサポートされているすべての警告の種類を適用する。
WarningMode 警告の配信方法を示す値。 省略時は MsgBox
MsgBox 警告を説明するメッセージボックスを表示する。メッセージボックスが却下されるとスクリプトは通常通り継続するので注意する必要がある。
StdOut [v1.1.04+]: ファイル名と行番号と共に、stdout に警告の説明を送信(プログラムの標準出力ストリーム)ユーザーが後でエディタの出力ペインを介して問題の行にジャンプすることができる。これは、SciTEのような高機能なエディタではスクリプトを中断せずに警告をキャプチャすることができる。
OutputDebug 表示用のデバッガへ警告の説明を送信する。デバッガがアクティブでない場合、これは効果が無い。詳細は、OutputDebugを参照。
Off 指定されたWarningTypeの警告を無効にする。

Remarks[編集]

デフォルトでは、すべての警告はオフになっている。

警告は実行時に有効/無効にすることはできない。設定はスクリプトがロードされるときに決定される。 したがって、スクリプト中での位置は重要ではない。(他の#指令と同様に、#Warnを条件付きで実行することができない)

ただし複数の#Warn指令がある場合、順序が重要になる。最後に指定した警告モードの時点で設定が決定される。 したがって、下記の例のように2つの記載ではUseEnv除くすべての警告を有効にすることができる組合せ効果がある。

#Warn All
#Warn UseEnv, Off

EnvSet EnvVar, 1
x := EnvVar       ; Okay since #NoEnv has not been used.
x := NotAnEnvVar  ; Warning.

Related[編集]

Local and Global Variables

Example(s)[編集]

#Warn All, Off                    ; Disable all warnings.  This is the default state.
#Warn                             ; Enable every type of warning; show each warning in a message box.
#Warn UseUnsetLocal, OutputDebug  ; Warn when a local variable is used before it's set; send warning to OutputDebug.