Тема: Корректно прервать цикл io.lines
Никак не могу разобраться с прерыванием io.lines, прошу помочь!
Написал функцию, её алгоритм - проверяет наличие файла по пути patch,
а). если его нет - возвращает 1.
б). если файл есть, перебирает строки, ищет строку с упоминанием pattern=NUMERIC, возвращает эту цифру.
Всё прекрасно работает, но файл может быть большой, незачем его весь шерстить, нашли паттерн и пора бы выскочить из цикла. И выскакивает, если поставить BREAK, вот только, похоже, файл остается открытым, или ешё какая-то катаклизма образуется. По-крайней мере последующий StringCrid:SaveToFile(patch) от vclua не может его переписать. Без BREAK, с полным перебором строк, записывает без проблем.
Как правильно написать функцию с досрочным выходом из цикла?
function parser(patch,pattern)
local x=1
local f=io.open(patch);
if f then f:close() else return x end
for line in io.lines(patch) do
if string.find(line,pattern) then
x= line:match(pattern..".-(%d+)");
-- break ???
end
end
return x
end
Или подскажите, как написать поиск только, например, в 5-ой строке файла?
Спасибо.