最近開發的一個軟體需要用一個數組做為軟體的設定,部分設定有軟體自帶做為初始化,其它部分有LUA腳本加入,這裡先做一個測試例子用Delphi實作
數組結構如下:
UI = {
UserName = {T = 'Text',C = '使用者名', V = 'user',H = '請輸入你的使用者名'};
PassWord = {T = 'Text',C = '密碼', V = 'word',H = '請輸入你的密碼'};
}
這裡需要用Delphi生成上面的數組代碼如下
L:= luaL_newstate();
if L = nil then Exit;
luaL_openlibs(L);
lua_newtable(L); // 建立一個表後面會放入全局變量UI
//====================================================================================
//壓入一個字元串UserName用來放入表{T = 'Text',C = '使用者名', V = 'user',H = '請輸入你的使用者名'}
lua_pushstring(L,'UserName'); // UI['UserName']
lua_newtable(L); // 建立一個表暫稱p1
// p1[1] = ['T'] = 'Text'
lua_pushstring(L,'T');
lua_pushstring(L,'Text');
lua_settable(L, 3);
// p1[2] = ['C'] = '使用者名'
lua_pushstring(L,'C');
lua_pushstring(L,'使用者名');
lua_settable(L, 3);
// p1[3] = ['V'] = 'user'
lua_pushstring(L,'V');
lua_pushstring(L,'user');
lua_settable(L, 3);
// p1[4] = ['H'] = '請輸入你的使用者名'
lua_pushstring(L,'H');
lua_pushstring(L,'請輸入你的使用者名');
lua_settable(L, 3);
lua_settable(L, 1);// UI['UserName'] = p1
//===================================================================================
//壓入一個字元串PassWord用來放入表{T = 'Text',C = '密碼', V = 'word',H = '請輸入你的密碼'}
lua_pushstring(L,'PassWord'); //UI['PassWord']
lua_newtable(L); // 建立一個表暫稱p2
// p1[1] = ['T'] = 'Text'
lua_pushstring(L,'T');
lua_pushstring(L,'Text');
lua_settable(L, 3);
// p1[2] = ['C'] = '密碼'
lua_pushstring(L,'C');
lua_pushstring(L,'密碼');
lua_settable(L, 3);
// p1[3] = ['V'] = 'word'
lua_pushstring(L,'V');
lua_pushstring(L,'word');
lua_settable(L, 3);
// p1[4] = ['H'] = '請輸入你的密碼'
lua_pushstring(L,'H');
lua_pushstring(L,'請輸入你的密碼');
lua_settable(L, 3);
lua_settable(L, 1);// UI['PassWord'] = p2
//==================================================================================
lua_setglobal(L, 'UI'); // 把表設定給全局變量UI
ret:=luaL_loadfilex(L, PChar(FileName), nil);
if ret <> LUA_OK then Exit;
lua_resume(L, nil, 0);
lua_close(L);
用lua來周遊一下代碼如下
for k, v in pairs(UI) do
print(k)
for kk, vv in pairs(UI[k]) do
print(' ',kk,vv)
end
end
列印結果如下
UserName
T Text
C 使用者名
V user
H 請輸入你的使用者名
PassWord
T Text
C 密碼
V word
H 請輸入你的密碼