Lua 文件处理

一、文件读存:
-- 似乎不支持大文件(不能超过9k?)
function FileSaveLoad()
      local file = io.open("c:\\in.lua", "r");
      assert(file);
      local data = file:read("*a"); -- 读取所有内容
      file:close();
      file = io.open("c:\\out.lua", "w");
      assert(file);
      file:write(data);
      file:close();
end
FileSaveLoad();

二、非循环表格处理:

HERO = 1;
MONSTER = 2;
BUILDING = 3;
SUMUNIT = 4;
cha = {};
cha[1] = 
{
      basic = 
      {
      Name = "农民",    --NPC名字
      cha_type = HERO,  --NPC模型
      },
      combat = 
      {
       acquire = 600.00,  --主动攻击范围
       basic_def = 10,   --基础防御
      },
};

function SaveTableContent(file, obj)
      local szType = type(obj);
      print(szType);
      if szType == "number" then
            file:write(obj);
      elseif szType == "string" then
            file:write(string.format("%q", obj));
      elseif szType == "table" then
            --把table的内容格式化写入文件
            file:write("{\n");
            for i, v in pairs(obj) do
                  file:write("[");
                  SaveTableContent(file, i);
                  file:write("]=\n");
                  SaveTableContent(file, v);
                  file:write(", \n");
             end
            file:write("}\n");
      else
      error("can't serialize a "..szType);
      end
end

function SaveTable()
      local file = io.open("e:\\00_00_00_海外组_学习\\写入.txt", "w");
      assert(file);
      file:write("cha = {}\n");
      file:write("cha[1] = \n");
      SaveTableContent(file, cha[1]);
      file:write("}\n");
      file:close();
end

SaveTable();

Delhi XE 是一个软件开发工具,能够将 Lua 代码或脚本嵌入到 C/C++ 代码中,以实现功能的扩展和定制化。在调用 Lua 文件时,通常需要以下几个步骤: 首先,需要创建一个 Lua 状态机(state)对象。这个对象是一个 Lua 解释器的实例,它可以加载和运行 Lua 代码。可以通过 Delhi XE 提供的函数来创建这个对象。 接下来,可以使用 Lua 标准库提供的函数,加载并执行 Lua 文件。使用 Delhi XE 工具,可以使用类似于“luaL_dofile”或“luaL_loadfile”等函数来完成这一步骤。这些函数会将 Lua 文件转换为 Lua 代码,并将其加载到 Lua 状态机中进行执行。 在 Lua 文件执行时,可以通过 Lua API 提供的函数来实现一些与 C/C++ 代码的交互。例如,可以在 Lua 文件中调用 C/C++ 函数,或者将 C/C++ 变量传递给 Lua 文件进行处理。这些函数和变量之间的交互可以通过注册函数或全局共享数据实现。 最后,要记得在程序执行结束时,及时释放 Lua 状态机对象,以避免内存泄漏和资源浪费。可以使用 Delhi XE 提供的函数来释放 Lua 状态机对象。 总结起来,Delhi XE 提供了一套方便而强大的方法,用于在 C/C++ 程序中调用 Lua 文件。通过创建 Lua 状态机对象,加载和执行 Lua 文件,以及 C/C++ 与 Lua 之间的交互,我们可以实现更灵活、定制化的功能扩展。这些功能扩展极大地增强了程序的性能和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值