C向LUA中写入多维数组(表)

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值