<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Корректно прервать цикл io.lines]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=176&amp;type=atom" />
	<updated>2015-11-16T10:44:33Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=176</id>
		<entry>
			<title type="html"><![CDATA[Re: Корректно прервать цикл io.lines]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1769#p1769" />
			<content type="html"><![CDATA[<p>Очередное спасибо! Работает корректно и быстрее моего варианта. )</p>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-16T10:44:33Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1769#p1769</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Корректно прервать цикл io.lines]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1768#p1768" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2015-11-16T10:15:44Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1768#p1768</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Корректно прервать цикл io.lines]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1766#p1766" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-16T06:06:15Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1766#p1766</id>
		</entry>
</feed>
