<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Корректно прервать цикл io.lines]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=176</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=176&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Корректно прервать цикл io.lines».]]></description>
		<lastBuildDate>Mon, 16 Nov 2015 10:44:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Корректно прервать цикл io.lines]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1769#p1769</link>
			<description><![CDATA[<p>Очередное спасибо! Работает корректно и быстрее моего варианта. )</p>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Mon, 16 Nov 2015 10:44:33 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1769#p1769</guid>
		</item>
		<item>
			<title><![CDATA[Re: Корректно прервать цикл io.lines]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1768#p1768</link>
			<description><![CDATA[<div class="codebox"><pre><code>function parser(path, pattern)
    local f=io.open(path);
    if not f then  return &quot;&quot; end

    local line_num = 1
    local line_5 = &quot;&quot;
    for line in f:lines() do
        if line_num == 5 then
            line_5 = line
            break
        end
        line_num = line_num + 1
    end

    f:close()

-- обрабоатываем строку номер 5 из line_5

    message(line_5)

    return line_5
end

parser(&quot;C:\\обрабатываемый файл&quot;, &quot;11&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Mon, 16 Nov 2015 10:15:44 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1768#p1768</guid>
		</item>
		<item>
			<title><![CDATA[Корректно прервать цикл io.lines]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=1766#p1766</link>
			<description><![CDATA[<p>Никак не могу разобраться с прерыванием io.lines, прошу помочь!<br />Написал функцию, её алгоритм - проверяет наличие файла по пути patch, <br />а). если его нет - возвращает 1.<br />б). если файл есть, перебирает строки, ищет строку с упоминанием pattern=NUMERIC, возвращает эту цифру.<br />Всё прекрасно работает, но файл может быть большой, незачем его весь шерстить, нашли паттерн и пора бы выскочить из цикла. И выскакивает, если поставить BREAK, вот только, похоже, файл остается открытым, или ешё какая-то катаклизма образуется. По-крайней мере последующий StringCrid:SaveToFile(patch) от vclua не может его переписать. Без BREAK, с полным перебором строк, записывает без проблем.<br />Как правильно написать функцию с досрочным выходом из цикла?</p><div class="codebox"><pre><code>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..&quot;.-(%d+)&quot;);
        -- break ???
    end
  end
  return x
end</code></pre></div><p>Или подскажите, как написать поиск только, например, в 5-ой строке файла?<br />Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Mon, 16 Nov 2015 06:06:15 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=1766#p1766</guid>
		</item>
	</channel>
</rss>
