最近开发的一个软件需要用一个数组做为软件的设置,部分设置有软件自带做为初始化,其它部分有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 请输入你的密码