Удаление строки из txt

3211Marlon1123

Участник
Автор темы
130
12
Версия MoonLoader
.027.0-preview
Как это сделать? Допустим, мне нужно удалить последнюю строчку
 
Последнее редактирование:
Решение
Lua:
function removeLines(file, linesToRemove)
    if doesFileExist(file) then
        local lines = {}
        for line in io.lines(file) do table.insert(lines, line) end
        for k, v in ipairs(linesToRemove) do
            if lines[v] ~= nil then
                lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку
            end
        end
        local result = {}
        for k, v in ipairs(lines) do
            if v ~= '**removedline**' then table.insert(result, v) end
        end
        local handle = io.open(file, 'w')
        handle:write(table.concat(result, '\n'))
        handle:close()
    end
end
Пример:
Lua:
sampRegisterChatCommand('remove', function()...

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,768
11,210
Lua:
function removeLines(file, linesToRemove)
    if doesFileExist(file) then
        local lines = {}
        for line in io.lines(file) do table.insert(lines, line) end
        for k, v in ipairs(linesToRemove) do
            if lines[v] ~= nil then
                lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку
            end
        end
        local result = {}
        for k, v in ipairs(lines) do
            if v ~= '**removedline**' then table.insert(result, v) end
        end
        local handle = io.open(file, 'w')
        handle:write(table.concat(result, '\n'))
        handle:close()
    end
end
Пример:
Lua:
sampRegisterChatCommand('remove', function()
    removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', {1, 5}) -- 1, 5 - строки которые будут удалены
end)
1648927189818.png

что бы удалить последнюю строку тебе нужно узнать ее номер, вот пример получения номера последней строки:
Lua:
function getLastLineIndex(file)
    local lines = {}
    for line in io.lines(file) do table.insert(lines, line) end
    return #lines
end

-- удалить последнюю:
removeLines(файл, {getLastLineIndex(файл)})
 
  • Нравится
Реакции: 3211Marlon1123

3211Marlon1123

Участник
Автор темы
130
12
Lua:
function removeLines(file, linesToRemove)
    if doesFileExist(file) then
        local lines = {}
        for line in io.lines(file) do table.insert(lines, line) end
        for k, v in ipairs(linesToRemove) do
            if lines[v] ~= nil then
                lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку
            end
        end
        local result = {}
        for k, v in ipairs(lines) do
            if v ~= '**removedline**' then table.insert(result, v) end
        end
        local handle = io.open(file, 'w')
        handle:write(table.concat(result, '\n'))
        handle:close()
    end
end
Пример:
Lua:
sampRegisterChatCommand('remove', function()
    removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', {1, 5}) -- 1, 5 - строки которые будут удалены
end)
Посмотреть вложение 142117
что бы удалить последнюю строку тебе нужно узнать ее номер, вот пример получения номера последней строки:
Lua:
function getLastLineIndex(file)
    local lines = {}
    for line in io.lines(file) do table.insert(lines, line) end
    return #lines
end

-- удалить последнюю:
removeLines(файл, {getLastLineIndex(файл)})
Спасибо, что отозвался. Сейчас проверю и отвечу)

Lua:
function removeLines(file, linesToRemove)
    if doesFileExist(file) then
        local lines = {}
        for line in io.lines(file) do table.insert(lines, line) end
        for k, v in ipairs(linesToRemove) do
            if lines[v] ~= nil then
                lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку
            end
        end
        local result = {}
        for k, v in ipairs(lines) do
            if v ~= '**removedline**' then table.insert(result, v) end
        end
        local handle = io.open(file, 'w')
        handle:write(table.concat(result, '\n'))
        handle:close()
    end
end
Пример:
Lua:
sampRegisterChatCommand('remove', function()
    removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', {1, 5}) -- 1, 5 - строки которые будут удалены
end)
Посмотреть вложение 142117
что бы удалить последнюю строку тебе нужно узнать ее номер, вот пример получения номера последней строки:
Lua:
function getLastLineIndex(file)
    local lines = {}
    for line in io.lines(file) do table.insert(lines, line) end
    return #lines
end

-- удалить последнюю:
removeLines(файл, {getLastLineIndex(файл)})
Не робит( Проверку на файл убрал, ибо она уже есть
Lua:
fileDirectory = 'путь к файлу и бла бла бла'
f = io.open(fileDirectory, 'r+')

function removeLines(linesToRemove)
    local lines = {}
    for line in f:lines() do table.insert(lines, line) end
    for k, v in ipairs(linesToRemove) do
        if lines[v] ~= nil then
            lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку
        end
    end
    local result = {}
    for k, v in ipairs(lines) do
        if v ~= '**removedline**' then table.insert(result, v) end
    end
    f:write(table.concat(result, '\n'))
    f:flush()
    f:close()
end

function getLastLineIndex()
    local lines = {}
    for line in f:lines() do table.insert(lines, line) end
    return #lines
end
 
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,768
11,210
Спасибо, что отозвался. Сейчас проверю и отвечу)


Не робит( Проверку на файл убрал, ибо она уже есть
Lua:
fileDirectory = 'путь к файлу и бла бла бла'
f = io.open(fileDirectory, 'r+')

function removeLines(linesToRemove)
    local lines = {}
    for line in f:lines() do table.insert(lines, line) end
    for k, v in ipairs(linesToRemove) do
        if lines[v] ~= nil then
            lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку
        end
    end
    local result = {}
    for k, v in ipairs(lines) do
        if v ~= '**removedline**' then table.insert(result, v) end
    end
    f:write(table.concat(result, '\n'))
    f:flush()
    f:close()
end

function getLastLineIndex()
    local lines = {}
    for line in f:lines() do table.insert(lines, line) end
    return #lines
end
1. какая ошибка в мунлоге?
2. попробуй оставить все как есть, не меняй функию (у меня все работало)
 

3211Marlon1123

Участник
Автор темы
130
12
1. какая ошибка в мунлоге?
2. попробуй оставить все как есть, не меняй функию (у меня все работало)
В логе ничего нет, сейчас попробую по дефолту как и было

1. какая ошибка в мунлоге?
2. попробуй оставить все как есть, не меняй функию (у меня все работало)
Вроде нашёл ошибку

1. какая ошибка в мунлоге?
2. попробуй оставить все как есть, не меняй функию (у меня все работало)
Фиксанул, заработало. Благодарочка
 
Последнее редактирование: