FADRI
-
Публикации
6 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные пользователем FADRI
-
-
Уже решил сам. Нашёл свои ошибки и исправил - забыл в местах обратного перебора сделать отрицательный шаг, а также сделал перебор в каждом случае только нужных частей с добавлением старых и новых значений в новую таблицу и её добавлению к таблице.
-
1
-
1
-
-
Есть таблица с числами, пытаюсь в функции сделать отзеркаливание таблицы. Пытался и просто к предыдущей таблице дописывать нужное, и в новую таблицу вставлять, но в обоих случаях не хочет работать. Программа будто просто не видит значения в изначальной таблице или не может создать новые таблицы внутри таблицы.
Или может надо сделать ещё одну таблицу в переборе nLine, куда записать данные при переборе nColumn, а затем её записать в новую таблицу под номером nLine?function Merging(img, horizontal, vertical) local newImage = {{}} for nLine = 1, #img do for nColumn = 1, #img[nLine] do newImage[nLine][nColumn] = img[nLine][nColumn] -- Тут ошибка! end end if(horizontal == true) then local newLine = #img + 1 for nLine = #img, 1 do for nColumn = 1, #img[nLine] do newImage[newLine][nColumn] = img[nLine][nColumn] end newLine = newLine + 1 end end if(vertical == true) then for nLine = 1, #img do local newColumn = #img[nLine] + 1 for nColumn = #img[nLine], 1 do newImage[nLine][newColumn] = img[nLine][nColumn] newColumn = newColumn + 1 end end end return newImage end
-
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
-
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))
-
Пишу программу, где нужно считать текст из .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

Ошибка в event.timer
в Помогите найти ошибку
Опубликовано:
Сделал скрипт анимации в отдельном файле (библиотеку), сделал чтобы она воспроизводилась раз в какое-то время.
Запускаю скрипт - выполняется корректно 1 раз анимация (сразу, без времени), а затем выдаёт ошибку bad argument #2 (function expected, got nil). Сделать через os.sleep(), как я понимаю, нельзя, так как одновременно должны работать две программы (главная (другая, не эта) и программа анимации (эта), сделаны через библиотеку thread), а os.sleep() останавливает всю систему на указанное время (опять же как я понял).
Так в чём же проблема? Или может посоветуете другое решение.