Не вызывается функция

Страницы: 1
RSS
Не вызывается функция
 
Добрый день.
Вот функция от разработчиков - записывать в файл любую таблицу КВИКа.
Не понятно как её вызывать.
Способ:
table_save("orders", "C:\\111.lua", trans_result) не работает. Выдаёт нил на строчке

local tables,lookup = { tbl },{ [tbl] = 1 }
Код
--[[
*******************************************************************
 Функция для сохранения произвольной таблицы (инструменты, сделки,
 заявки и т.п.) в файл. В качестве параметра принимает тэг, хендл
 файла (после открытия с помощью io.open) и таблицу.
 Пример вызова функции:
    table_save("orders", file, trans_result)
*******************************************************************
]]

function exportstring( s )
    return string.format("%q", s)
end

function table_save( tag, file, tbl)
    local charS,charE = "   ","\n"
    local tables,lookup = { tbl },{ [tbl] = 1 }
    file:write( charE ..tag .. "{"..charE )

    for idx,t in ipairs( tables ) do
        file:write( "-- Table: {"..idx.."}"..charE )
        file:write( "{"..charE )
        local thandled = {}

        for i,v in ipairs( t ) do
            thandled[i] = true
            local stype = type( v )
            if stype == "table" then
               if not lookup[v] then
                  table.insert( tables, v )
                  lookup[v] = #tables
               end
               file:write( charS.."{"..lookup[v].."},"..charE )
            elseif stype == "string" then
               file:write(  charS..exportstring( v )..","..charE )
            elseif stype == "number" then
               file:write(  charS..tostring( v )..","..charE )
            end
         end

         for i,v in pairs( t ) do
            if (not thandled[i]) then

               local str = ""
               local stype = type( i )
               if stype == "table" then
                  if not lookup[i] then
                     table.insert( tables,i )
                     lookup[i] = #tables
                  end
                  str = charS.."[{"..lookup[i].."}]="
               elseif stype == "string" then
                  str = charS.."["..exportstring( i ).."]="
               elseif stype == "number" then
                  str = charS.."["..tostring( i ).."]="
               end

               if str ~= "" then
                  stype = type( v )
                  if stype == "table" then
                     if not lookup[v] then
                        table.insert( tables,v )
                        lookup[v] = #tables
                     end
                     file:write( str.."{"..lookup[v].."},"..charE )
                  elseif stype == "string" then
                     file:write( str..exportstring( v )..","..charE )
                  elseif stype == "number" then
                     file:write( str..tostring( v )..","..charE )
                  end
               end
            end
         end
         file:write( "},"..charE )
      end
      file:write( "}"..charE )
end
 
Вопрос актуален.
Саппорт, не проходите мимо
 
Вы вызываете неправильно
прочитайте комментагий что такое file
 
Цитата
swerg написал:
хендл
я не знаю что такое хендл
Человек, который писал эту функцию, делал по сути бессмысленную работу. Предполагается, что он типа помог новичкам, но понять как пользоваться функцией, новичок не может. Разобраться с функцией может только тот, кто и без посторонней помощи может её написать. Поэтому зачем он её писал и выкладывал - не понятно.
 
Не понятно: вам подсказать как её использовать? или в чем вопрос?
Код
f = io.open("D:\\111.lua", "w+t")
t = {1, 2, {'a','b','c'}, 3, ['Q']=100}
table_save("tbl", f, t)

 
Кстати, она генерирует как-то не совсем Lua-текст таблицы.
Впрочем, нужно просто подпилить под свои нужны, очевидно.
Страницы: 1
Читают тему
Наверх