|
js
DLLをloadした後、DLL関数をラッパー関数内でコールするとNGとなる。
NGとなる関数はdllFuncStrの関数でNGでした。
具体的にはdll_obj_str.GetKeyValue(existkey_v);をラッパー関数内でコールすると
NG。
ラッパー関数ではなく、DLLをloadした関数と同じ関数内ではOKでした。
jsで動作確認できなかったので、vbsでも同じことが起こるのか確認しようとした所v
bsでは別の問題が起きました。
vbs
DLLをloadした後、DLL関数を実行するとNG。
NGとなる条件は、関数の引数に渡す文字列(sectionやkey)を変数の中にいれるとエラー
関数の引数に文字列(sectionやkey)をベタ書きするとOKとなる。
今まではベタ書きしていたのでわからなかったのですが
変数に入れるとNGでした。
ラッパー関数内でベタ書きして実行した場合はOKでした。
引数をそのまま入れるとNGでした。
//===jsソース==================
Get_ini_info_test();
endMacro();
function Get_ini_info_test()
{
var dll;
var dll_obj_var;
var dll_obj_str;
var key_num_v;
var existkey_v;
var script_file_num_s;
var dllname_s;
var ini_file_fullpath;
var menu_num;
var inifile_section;
var inifile_key;
//初期化
dllname_s = "ht_tools.dll";
//iniファイルがある場所をフルパスで取得
ini_file_fullpath = "G:\\tool\\test_INI.ini";
inifile_section = "settings";
inifile_key = "script_file_num";
//DLLをロードしオブジェクトを取得
dll = loadDll(dllname_s);
//数値オブジェクト
dll_obj_var = dll.dllFunc;
//文字列オブジェクト
dll_obj_str = dll.dllFuncStr;
// keyの数
key_num_v = ini_ReadSectionKeys(inifile_section, ini_file_fullpath, dll_ob
j_var);
if(key_num_v < 0)
{
Echo("ReadSectionKeys:失敗");
endMacro();
}
//menuの数を文字列で取得
script_file_num_s = ini_GetKeyValue(inifile_key, dll_obj_var, dll_obj_str)
// script_file_num_s = dll_obj_str.GetKeyValue(1);
Echo(script_file_num_s);
}
function ini_ReadSectionKeys(ini_section, ini_fullpath, dll_obj_var)
{
var key_num_v;
//keyの数
key_num_v = dll_obj_var.ReadSectionKeys(ini_fullpath, ini_section);
if(key_num_v < 0)
{
Echo("ReadSectionKeys:失敗");
endMacro();
}
return key_num_v;
}
function ini_GetKeyValue(ini_key, dll_obj_var, dll_obj_str)
{
var existkey_v;
var ini_get_key_value;
existkey_v = dll_obj_var.ExistKey(ini_key);
if(existkey_v < 0)
{
Echo("ExistKey:失敗");
endMacro();
}
Echo(existkey_v);
//iniファイルから文字列を取得する
ini_get_key_value = dll_obj_str.GetKeyValue(existkey_v);
if(ini_get_key_value = "")
{
Echo("GetKeyValue:失敗");
endMacro();
}
Echo(ini_get_key_value);
return ini_get_key_value;
}
//=====================
'===vbsソース==================
Dim existkey_v
Dim dll_obj_var
Dim dll_obj_str
Dim key_num_v
Dim script_file_num_s
Dim dllname_s
Dim dll
Dim ini_file_fullpath
Dim inifile_section
Dim inifile_key
'初期化
dllname_s = "ht_tools.dll"
' dllname_s = "C:\\Program Files\\HmFilerClassic\\ht_tools.dll"
'iniファイルがある場所をフルパスで取得
ini_file_fullpath = "G:\\tool\\test_INI.ini"
inifile_section = "settings"
inifile_key = "script_file_num"
'DLLをロードしオブジェクトを取得
Set dll = loadDll(dllname_s)
'数値オブジェクト
Set dll_obj_var = dll.dllFunc
'文字列オブジェクト
Set dll_obj_str = dll.dllFuncStr
' key_num_v = dll_obj_var.ReadSectionKeys("G:\\tool\\test_INI.ini", "setting
s")'OK
key_num_v = dll_obj_var.ReadSectionKeys(ini_file_fullpath, inifile_section)'NG
' existkey_v = dll_obj_var.ExistKey("script_file_num")'OK
existkey_v = dll_obj_var.ExistKey(inifile_key)'NG
script_file_num_s = dll_obj_str.GetKeyValue(existkey_v)'OK
endMacro()
'=====================
//====test_INI.ini=================
[settings]
menu_test=1
script_file_num=2
//=====================
|
|