「秀丸マクロ」のスコープと「hmLJ/LuaJIT」のスコープとの値のやり取り概要LuaJITの例題のひとつとなります。 スコープ間の値のやりとりhmLJがLuaJITに付け加えている機能とは、まさにここになります。 Luaの配列はindexが「1」から始まるということに注意しましょう。 #L = loaddll( hidemarudir + "\\" + "hmLJ.dll" ); // テーブル{1,2,3}をbbbに代入 #_ = dllfunc(#L, "DoString", "bbb = {1,2,3}\n"); #_ = dllfunc(#L, "SetNumVar", "var1", 100); #num = dllfunc(#L, "GetNumVar", "var1"); message(str(#num)); #_ = dllfunc(#L, "DoString", "bbb[2] = var1\n" ); // bbbの[2]をresult_numという変数に代入 #_ = dllfunc(#L, "DoString", "result_num = bbb[2]" ); // resultの数値を得る #result_num = dllfunc(#L, "GetNumVar", "result_num"); // 表示 message(str(#result_num)); // LuaJITのスコープにグローバル変数nameとして「武田信玄」という文字列を代入 #_ = dllfunc(#L, "SetStrVar", "name", "武田信玄"); // 今設定した値を秀丸マクロ側に取得 $name = dllfuncstr(#L, "GetStrVar", "name"); message($name); // bbb[1]の値と-200の絶対値を足しこんで、result_numという変数に代入 #_ = dllfunc(#L, "DoString", ""+ "result_num = bbb[1] + math.abs(-200)\n" ); // それを秀丸マクロ側に得る #result_num = dllfunc(#L, "GetNumVar", "result_num"); // 文字列として表示 message(str(#result_num)); freedll(#L); |