2017-01-13 6 views
0

AHKで多次元配列を作成しようとしています。キーのcallbackMessages配列にあります。これらのハンドラはすべてメニューによって実行されます。私はここで配列にオブジェクトをインスタンス化します:AutoHotkeyの多次元配列にキーを追加するにはどうすればよいですか?

Application = { Messages: [] } 

次に、使用するコールバック、すなわち:ルールをユーザーに尋ねます。ユーザーはルール配列にメッセージを追加します。

CreateMessageHandler: 
InputBox callback, Create a message group., Choose a callback for this message., , 
if !ErrorLevel 
    InputBox message, Add a new sentence., Enter your line to store., , 
    if !ErrorLevel 
     Application.Messages[callback].Insert(message) 
     MsgBox Bravo! Message added successfully.`n`nNote: You can use CTRL+D to quickly display these. 
return 

、その後に出力コールバック、私は彼がメッセージや出力を通じて前に入れた後、サイクルコールバックをユーザーに尋ねる:

DisplayMessageHandler: 
InputBox, callback, Display a set of messages., Enter which callback you want to display., , 
if !ErrorLevel 
    for key, value in Application.Messages[callback] { 
     send {Raw}%value% 
     send {Enter} 
     sleep, 1000 
    } 
return 

私はエラーを受け取っていないのです、私はどのように考えることができませんApplication.Messagesがコールバック/メッセージをそこに保存していないため、デバッグすることはできません。誰か助けてくれますか?ありがとう!

P.S - This is my reference to information/documentation.

答えて

0

上記のコードは未設定の配列にメッセージを挿入しようとしている、私はこのような別のフラグを作成:メッセージを追加することになりましたので

GroupMessageHandler: 
InputBox callback, Create a message group., Choose a callback for this message., , 
if !ErrorLevel 
    Application.Messages[callback] := [] 
    MsgBox % "Successfully added " . callback ". You can how add messages to it!" 
return 

を、あなたはコールバックを選択し、そのメッセージへのメッセージはInsertです。制限があるのは、コールバックが存在するのか、型配列であるのか分かりません。私はそれを調べます。とにかくありがとう。

または、ユーザーが使用するグループを指定しているときに配列が存在しない場合は、配列のインスタンスを作成するように変更しました。キーにスペースを入れることができないので、空白の削除も追加しました。

CreateMessageHandler: 
InputBox callback, Which group are you adding., Please enter a callback so you can add more messages to this group., , 
if !ErrorLevel 
    StringReplace , callback, callback, %A_Space%,,All 
    if(!Application.Messages[callback]) 
     Application.Messages[callback] := [] 
    InputBox message, Add a new sentence., Enter your line to store., , 
    if !ErrorLevel 
     Application.Messages[callback].Insert(message) 
     MsgBox Bravo! Message added successfully.`n`nNote: All white spaces of %callback% was removed.`nNote: You can use CTRL+D to quickly display these. 
return 

私はちょうどディスプレイを通じてループし、何が本当にストリッピングホワイトスペースとは別に、ここで変わっていない:

DisplayMessageHandler: 
InputBox, callback, Display a set of messages., Enter which callback you want to display., , 
StringReplace , callback, callback, %A_Space%,,All 
for key, value in Application.Messages[callback] { 
    send {Raw}%value% 
    send {Enter} 
    sleep, 1000 
} 
return 
関連する問題