Перейти к содержимому
  • 0
FADRI

attempt to index local (a boolean value)

Вопрос

Пишу программу, где нужно считать текст из .txt файла для использования. Для считывания текста специально написал библиотеку (не кидайте в меня тапками, если в ней что-то неправильно сделал, ибо в них не шарю), но при её вызове из главного файла выдаёт ошибку: attempt to index local 'data' (a boolean value). Саму библиотеку проверил - с ней проблем нет (по крайней мере все нужные переменные на вывод приводятся к нужному формату.

 

-- Главный файл

local data = require("data")  -- Библиотека данных
local ai_vers, ai_name, auth_users, admins = data.Get()  -- Получение данных из библиотеки даты
-- Библиотека

local data = {}

function data.Get()
    local ai_vers
    local ai_name = {}
    local auth_users = {}
    local admins = {}


    local file, err = io.open("config.txt", "r") -- Открываем файл
    if file then
        config = file:read("*a")  -- Читаем весь файл
        config = string.gsub(config, "%s+", "") -- Удаляем все пробелы из строки
    else
        print("Error opening file: " .. err)
    end
    file:close()  -- Закрываем файл

    -- Значения из файла
    local t = {}  -- Массив всех нужных данных из файла

    local i = 0
    for s in string.gmatch(config, "[^;]+") do
        local w = {}
        local k = 0
        for v in string.gmatch(s, "[^:]+") do
            w[k] = v
            k = k+1
        end

        if(w[1] == nil) then
            w[1] = "пусто"
        end

        t[i] = w[1]
        i = i + 1
    end

    -- Разбиение строки имени ИИ
    t[1] = t[1] .. ",компьютер,комп"
    local nai = {}   -- Массив всех имён из ИИ из файла
    local i = 0
    for s in string.gmatch(t[1], "[^,]+") do
        nai[i] = s
        i = i+1
    end
    -- Разбиение строки Авторизованных пользователей
    local au = {}   -- Массив всех авторизованных пользователей из файла
    local i = 0
    for s in string.gmatch(t[2], "[^,]+") do
        au[i] = s
        i = i+1
    end
    -- Разбиение строки Администраторов
    local ad = {}   -- Массив всех администраторов из файла
    local i = 0
    for s in string.gmatch(t[3], "[^,]+") do
        ad[i] = s
        i = i+1
    end

    -- Данные
    ai_vers = string.lower(t[0])
    ai_name = string.lower(t[1])
    auth_users = t[2]
    admins = t[3]


    return ai_vers, ai_name, auth_users, admins
end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

В конец библиотеки надо return data.

Потом стоит перезагрузить компьютер (или выполнить в интерпретаторе lua package.loaded['data'] = nil), чтобы старая библиотека была удалена из кэша.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, ProgramCrafter сказал:

В конец библиотеки надо return data.

Потом стоит перезагрузить компьютер (или выполнить в интерпретаторе lua package.loaded['data'] = nil), чтобы старая библиотека была удалена из кэша.

То есть в конце нужно написать не return ai_vers, ai_name_auth_users, admins, а просто return data?

Я сделал так, перезагрузил пк и снова запустил main.lua, но получил эту же ошибку (всё та же строчка).

 

Или это нужно написать в самом конце библиотеки (после функции)? Если так, то выдаёт ошибку в main.lua на другой строчке, где я пытаюсь применить одно из переданных значений (bad argument #1 (string expected, got nil))

Изменено пользователем FADRI
Дополнение

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, FADRI сказал:

То есть в конце нужно написать не return ai_vers, ai_name_auth_users, admins, а просто return data?

Я сделал так, перезагрузил пк и снова запустил main.lua, но получил эту же ошибку (всё та же строчка).

 

Или это нужно написать в самом конце библиотеки (после функции)? Если так, то выдаёт ошибку в main.lua на другой строчке, где я пытаюсь применить одно из переданных значений (bad argument #1 (string expected, got nil))

А, я понял в чём проблема - просто выводил не разделённую строчку и пытался использовать переменную как table, а там nil

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...