чтение файла txt в mimgui

$Mr.R1ch$

Активный
Автор темы
260
37
Версия MoonLoader
Другое
Приветствую, хочу читать информацию с текстового файла в мимгуи, но проблема в том, что файл у меня не читается. Полазал по темам другим и искал решение, но не одно из них у меня не работает, быть может делаю что то я не так.

Lua:
imgui.OnFrame(function() return Criminal_Code[0] and not isGamePaused() end, function(criminal)
     imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
     imgui.SetNextWindowSize(imgui.ImVec2(1010, 760), imgui.Cond.FirstUseEver)
     imgui.Begin(u8'Уголовное законодательство', Criminal_Code)
-- тут должен открываться файл и читаться, но этого не происходит 
     local file = io.open(getWorkingDirectory().. "/Example/test/ук/ук.txt", "r")
     if file then
        a = file:read("*a")
        file:close()

        --тут я паршу текст с файла
        for code, criminal in ipairs(a) do
           imgui.TextWrapped(u8(criminal))
        end
    else
       imgui.Text(u8'Ошибка! Не удалось получить информацию!.')
       imgui.Text(u8'Сервер: '..serverName)
     end
        imgui.End()
  end)
 
Решение
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local text = {}
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil

    local directory = getWorkingDirectory()
    local path = ("%s\\yk.txt"):format(directory)

    for line in io.lines(path) do
        table.insert(text, u8(line))
    end
end)

imgui.OnFrame(function() return true end,
function()
    for _, line in ipairs(text) do
        imgui.TextWrapped(line)
    end          
end)

1730459191020.png


for io.lines(path) парсит по строчке документ

то чувство, когда читал книгу по луа и запомнил io.lines 🥹

chromiusj

R&B-baby-queen
Модератор
5,589
3,893
Lua:
local text = ""

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local file = io.open(getWorkingDirectory()..'\\123.txt', 'r')
    if file then
        text = file:read('*a')
        file:close()
    end
end)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            imgui.TextWrapped(text)
            imgui.End()
        end
    end
)
 
  • Нравится
Реакции: $Mr.R1ch$

$Mr.R1ch$

Активный
Автор темы
260
37
Lua:
local text = ""

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    local file = io.open(getWorkingDirectory()..'\\123.txt', 'r')
    if file then
        text = file:read('*a')
        file:close()
    end
end)

local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow) then
            imgui.TextWrapped(text)
            imgui.End()
        end
    end
)
что делать если есть ограничение в символах? я всунул большой текст (на 200+ строк), и дальше просто не читается? (сделал функцию в точности как у тебя)
 

Вложения

  • Screenshot_2024_1029_215404.jpg
    Screenshot_2024_1029_215404.jpg
    108.7 KB · Просмотры: 29
  • yk.txt
    22.7 KB · Просмотры: 5

Lance_Sterling

Известный
963
336
что делать если есть ограничение в символах? я всунул большой текст (на 200+ строк), и дальше просто не читается? (сделал функцию в точности как у тебя)
Не хватило байтов значит в использовании одной функции TextWrapped, с чтением все ок
Lua:
for line in text:gmatch("[^\r\n]+") do
    imgui.TextWrapped(line);
end
 

$Mr.R1ch$

Активный
Автор темы
260
37
Не хватило байтов значит в использовании одной функции TextWrapped, с чтением все ок
Lua:
for line in text:gmatch("[^\r\n]+") do
    imgui.TextWrapped(line);
end
вроде работает теперь, но не читаются пробелы в текстовом файле, а то сплошная каша(на скрине выше видно как должны стоять пробелы )
 

$Mr.R1ch$

Активный
Автор темы
260
37
Какие пробелы то? Скрин скинь
на первом скрине стоят пробелы в txt файле и они отображаются. на втором скрине тоже стоят пробелы в txt файле но они не отображаются, и получается лютая каша(файл txt сверху в моем сообщении)
 

Вложения

  • Screenshot_2024_1029_215404.jpg
    Screenshot_2024_1029_215404.jpg
    108.7 KB · Просмотры: 16
  • IMG_20241030_123018.jpg
    IMG_20241030_123018.jpg
    740.5 KB · Просмотры: 15

Lance_Sterling

Известный
963
336
Не хватило байтов значит в использовании одной функции TextWrapped, с чтением все ок
Lua:
for line in text:gmatch("[^\r\n]+") do
    imgui.TextWrapped(line);
end
Попробуй добавить проверку если #line == 0 тогда imgui.NewLine()
 

$Mr.R1ch$

Активный
Автор темы
260
37
на первом скрине стоят пробелы в txt файле и они отображаются. на втором скрине тоже стоят пробелы в txt файле но они не отображаются, и получается лютая каша(файл txt сверху в моем сообщении)
up
 

ChаtGPT

Активный
371
93
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local text = {}
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil

    local directory = getWorkingDirectory()
    local path = ("%s\\yk.txt"):format(directory)

    for line in io.lines(path) do
        table.insert(text, u8(line))
    end
end)

imgui.OnFrame(function() return true end,
function()
    for _, line in ipairs(text) do
        imgui.TextWrapped(line)
    end          
end)

1730459191020.png


for io.lines(path) парсит по строчке документ

то чувство, когда читал книгу по луа и запомнил io.lines 🥹
 
Последнее редактирование:
  • Нравится
Реакции: $Mr.R1ch$