<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Можно ли ускорить парсинг?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8440</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8440&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Можно ли ускорить парсинг?».]]></description>
		<lastBuildDate>Thu, 04 Jul 2013 16:44:19 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73493#p73493</link>
			<description><![CDATA[<div class="codebox"><pre><code>
loop, 250000
    {
    var := StrGet(addr, 9)
    addr := addr + 22
    }    </code></pre></div><p>&nbsp; Всё вместе занимает меньше полсекунды. Очень мощная штука. Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (Next)]]></author>
			<pubDate>Thu, 04 Jul 2013 16:44:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73493#p73493</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73483#p73483</link>
			<description><![CDATA[<p><strong>Irbis</strong><br />Да, верно. Исправил. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Thu, 04 Jul 2013 13:49:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73483#p73483</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73482#p73482</link>
			<description><![CDATA[<p>в коде поста #19 исправил первую строку )) Почему-то вместо &quot;<em>22 : 11</em>&quot; отправил вариант &quot;<em>16 : 8</em>&quot;</p><br /><p><strong>YMP</strong>, тогда уж </p><div class="codebox"><pre><code>addr := addr + 22</code></pre></div><p> иначе при каждой итерации addr будет прирастать на всё бОльшую величину, а не на фиксированный шаг.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Thu, 04 Jul 2013 13:37:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73482#p73482</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73480#p73480</link>
			<description><![CDATA[<div class="quotebox"><cite>Next пишет:</cite><blockquote><p>&nbsp; У меня Win7. Значит в строке 10 символов: 9 - цвет и 1 перевод строки.</p></blockquote></div><p>А как это связано с Win7? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> У меня, кстати, тоже она. AutoHotkey юникодный. В строке 11 2-байтных символов — 9 цвет и 2 новая строка: возврат каретки и перевод строки. В байтах длина строки будет 22.</p><p>У меня ваш код работает после таких исправлений:<br /></p><div class="codebox"><pre><code>FileRead, text_file, D:\путь\str.txt
addr := &amp;text_file
loop, 10
    {
    MsgBox, % &quot;Stroka: &quot;  StrGet(addr, 9)
    addr := addr + 22
    }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Thu, 04 Jul 2013 13:23:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73480#p73480</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73478#p73478</link>
			<description><![CDATA[<p>Все же рекомендую отказаться от многоступенчатых преобразований туда-сюда, при первой возможности. По поводу &quot;что я делаю неправильно&quot; :<br /></p><div class="codebox"><pre><code>d := A_IsUnicode ? 22 : 11
FileRead, text_file, %A_ScriptDir%\str.txt
addr := &amp;text_file - d
loop 200
   MsgBox % &quot;Stroka: &quot; . StrGet(addr+=d, 9)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Thu, 04 Jul 2013 13:05:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73478#p73478</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73477#p73477</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p> Использование именно такого варианта обусловлено какими причинами, если не секрет?</p></blockquote></div><p>&nbsp; Секрета нет. Причина одна - неумение использовать более продвинутые варианты. Хотя начинал конечно с вида &quot;FF9A12&quot;, но увидев, что я иногда не в состоянии обработать нужным образом такие величины, всё равно каждый раз преобразую в &quot;010 223 107&quot;, а потом назад &quot;шифрую&quot; в HEX, просто перешёл на тот вариант, который обсуждается.</p><p>&nbsp; Спасибо за совет, но пока я воспользоваться им не в состоянии.</p>]]></description>
			<author><![CDATA[null@example.com (Next)]]></author>
			<pubDate>Thu, 04 Jul 2013 12:54:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73477#p73477</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73476#p73476</link>
			<description><![CDATA[<p>Ускорять обработку (читай: оптимизировать) нужно не с середины, а с начала, если имеется такая возможность. Возникает вопрос о происхождении текстового файла с цветами точек, заданными к тому же в десятичном, а не в HEX формате, что было бы еще как-то понятно. Использование именно такого варианта обусловлено какими причинами, если не секрет? Дело в том, что если описать этот массив точек в двоичном формате (4 байта на точку - для скорости), то файл займет меньше мегабайта, что уже даст прирост по скорости чтения.&nbsp; А загрузив его в переменную, можно извлекать цвета нужных точек посредством NumGet, или же вообще поручить это процедуре в машинных кодах, получив значительный прирост в производительности скрипта.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Thu, 04 Jul 2013 12:31:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73476#p73476</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73474#p73474</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Адрес переменной, куда считан файл, узнаётся оператором &amp;.<br /></p><div class="codebox"><pre><code>
addr := &amp;Var
</code></pre></div><p> Это и будет адрес буфера с текстом. Прибавьте к нему смещение нужной строки от начала и получите её адрес. Если версия AutoHotkey юникодная, то каждый символ занимает 2 байта. Между строками два невидимых символа, возврат каретки и перевод строки, т.е. 4 байта. Если версия не юникодная, тогда считайте по 1 байту на символ.</p></blockquote></div><p>&nbsp; У меня Win7. Значит в строке 10 символов: 9 - цвет и 1 перевод строки. Пробовал по всякому. Находится почему-то то, чего в файле нет. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> <br />&nbsp; Я попробовал даже читать подряд, пока поймаю существующую строку:</p><div class="codebox"><pre><code>

FileRead, text_file, D:\путь\str.txt
addr := &amp;text_file
loop, 200
    {
    addr := addr + A_index
    MsgBox, % &quot;Stroka: &quot;  StrGet(addr, 10, 0)
    }
</code></pre></div><p>&nbsp; &nbsp;Выдаётся вообще по одной цифре &quot;0&quot;, то &quot;5&quot;.&nbsp; &nbsp;Что я делаю неправильно?</p>]]></description>
			<author><![CDATA[null@example.com (Next)]]></author>
			<pubDate>Thu, 04 Jul 2013 12:19:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73474#p73474</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73471#p73471</link>
			<description><![CDATA[<p>По алгоритму, думаю можно смотреть ответ YMP. Из того что я понял в этом коде я делаю вывод, что он всё понял правильно.</p>]]></description>
			<author><![CDATA[null@example.com (Next)]]></author>
			<pubDate>Thu, 04 Jul 2013 11:55:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73471#p73471</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73469#p73469</link>
			<description><![CDATA[<p>Извините, что так путано объясняю. Попробую ещё раз.</p><br /><p>Цвет каждой точки записаны в одну строку. Каждая новая строка - новый цвет. Всего точек 500х500. В файле первые 500 строк - первый ряд точек,&nbsp; 501-я строка&nbsp; цвет первой точки во втором ряду. Цвет точки 125х358 находится в строке №179125 = 500 x 358 + 125. <br />&nbsp; Чтобы узнать не является ли точка, ниже обрабываемой&nbsp; в данный момент 125х358, чёрной, нужно вычислить её строку и прочитать её. В нашем случае это строка 179625 = 125 + 359 x 500.</p>]]></description>
			<author><![CDATA[null@example.com (Next)]]></author>
			<pubDate>Thu, 04 Jul 2013 11:50:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73469#p73469</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73465#p73465</link>
			<description><![CDATA[<p>Видимо я глуп. Но мне надо объяснять на цифрах (алгоритме). На пальцах (картинках) я не пойму. Вы сейчас предлагаете мне выработать некий новый алгоритм вычисления. Или объяснить свой?<br />Я не вижу отношения к приведённым ранее &quot;текстам&quot;.</p><br /><p>У вас есть одна строка (весь текст 250 файлов), в которой надо найти нужную цифру.?<br />Дальнейшие критерии поиска остальных строк, исходя из найденной - мне всё таки не ясны.<br />Картинки это хорошо. Работаем то с текстом.<br />Как в строке с набором цветов, определяется их принадлежность к координатам.?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 04 Jul 2013 11:01:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73465#p73465</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73464#p73464</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Простите, а как её тут можно применить?</p></blockquote></div><p>Когда пойму это:</p></blockquote></div><p>&nbsp; Для примера.&nbsp; Это фрагмент квадрата 500х500. Проверяется очередная точка. Её координаты относительно начала квадрата 125х358. Нужно определить цвета соседних точек.&nbsp; Они расположены в квадрате 3x3 c центром, расположенным в проверяемой точке.</p><p><a href="http://radikal.ru/fp/85b2174a49f94f10a9fbf2c69ba03636"><span class="postimg"><img src="http://s017.radikal.ru/i410/1307/dd/540145b50fc9.jpg" alt="http://s017.radikal.ru/i410/1307/dd/540145b50fc9.jpg" /></span></a></p>]]></description>
			<author><![CDATA[null@example.com (Next)]]></author>
			<pubDate>Thu, 04 Jul 2013 10:49:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73464#p73464</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73463#p73463</link>
			<description><![CDATA[<p>Вот для примера две функции, получающие цвет по координатам и координаты по цвету. Написаны в предположении, что АНК юникодный и точки квадрата в файле описаны ряд за рядом, а не колонка за колонкой.<br /></p><div class="codebox"><pre><code>
file = d:\prog\temp\colors.txt
FileRead, buf, %file%

color = 241014233

If CoordsFromColor(color, x, y)
    MsgBox, X: %x% Y: %y%
Else
    MsgBox, Цвет не найден

ColorFromCoords(color, x, y)

MsgBox, Color: %color%


CoordsFromColor(color, ByRef x, ByRef y)
{
    global buf
    pos := InStr(buf, color)
    If (pos = 0)
        Return False
    pos := (pos - 1) // 11
    x := Mod(pos, 500)
    y := pos // 500
    Return True
}

ColorFromCoords(ByRef color, x, y)
{
    global buf
    addr := &amp;buf + (y * 500 + x) * 22
    color := StrGet(addr, 9)
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Thu, 04 Jul 2013 10:10:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73463#p73463</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73458#p73458</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Простите, а как её тут можно применить?</p></blockquote></div><p>Когда пойму это:<br /></p><div class="quotebox"><cite>Next пишет:</cite><blockquote><p>Нужно найти точки с определёнными критериями и проверить точки, которые их окружают. <br /> Допустим в координатах <br />x125 y358 <br />есть чёрная точка и нужно проверить сколько ещё таких же точек есть вокруг неё.&nbsp; Т.е. нужно проверить квадрат 3х3 с углами в точках&nbsp; x124 y357 и&nbsp; x126 y358.</p><p>&nbsp; Для этого нужно найти в файле строки соответствующие этим точкам и проверить их. Важное обстоятельство в том, что при парсинге, если обнаружена искомая точка,&nbsp; то проверять нужно в том числе и 4 точки до которых дело ещё не дошло, и мы о них ничего не знаем.</p></blockquote></div><p>и привязку оного, к приведённому набору цифр, то наверное скажу.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 04 Jul 2013 09:23:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73458#p73458</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Можно ли ускорить парсинг?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=73453#p73453</link>
			<description><![CDATA[<div class="quotebox"><cite>Next пишет:</cite><blockquote><p>Как узнать адрес для StrGet так и не понял.&nbsp; &nbsp;<img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p></blockquote></div><p>Адрес переменной, куда считан файл, узнаётся оператором &amp;.<br /></p><div class="codebox"><pre><code>
addr := &amp;Var
</code></pre></div><p> Это и будет адрес буфера с текстом. Прибавьте к нему смещение нужной строки от начала и получите её адрес. Если версия AutoHotkey юникодная, то каждый символ занимает 2 байта. Между строками два невидимых символа, возврат каретки и перевод строки, т.е. 4 байта. Если версия не юникодная, тогда считайте по 1 байту на символ.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Thu, 04 Jul 2013 02:13:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=73453#p73453</guid>
		</item>
	</channel>
</rss>
