<?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>http://forum.script-coding.com/viewtopic.php?id=12444</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12444&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Обращение к двумерным массивам».]]></description>
		<lastBuildDate>Tue, 14 Feb 2017 19:16:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112494#p112494</link>
			<description><![CDATA[<p>С переменными можно так получить все названия, после чего парсить.<br />А с объектами так просто не получается.<br />Возможно надо смотеть, что записано по полученному адресу в процессе:<br /></p><div class="codebox"><pre><code>a := &quot;test&quot;
b := [&quot;test&quot;]
MsgBox % ScriptInfo(&quot;ListVars&quot;)

ScriptInfo(Command)
{
    static hEdit := 0, pfn, bkp
    if !hEdit {
        hEdit := DllCall(&quot;GetWindow&quot;, &quot;ptr&quot;, A_ScriptHwnd, &quot;uint&quot;, 5, &quot;ptr&quot;)
        user32 := DllCall(&quot;GetModuleHandle&quot;, &quot;str&quot;, &quot;user32.dll&quot;, &quot;ptr&quot;)
        pfn := [], bkp := []
        for i, fn in [&quot;SetForegroundWindow&quot;, &quot;ShowWindow&quot;] {
            pfn[i] := DllCall(&quot;GetProcAddress&quot;, &quot;ptr&quot;, user32, &quot;astr&quot;, fn, &quot;ptr&quot;)
            DllCall(&quot;VirtualProtect&quot;, &quot;ptr&quot;, pfn[i], &quot;ptr&quot;, 8, &quot;uint&quot;, 0x40, &quot;uint*&quot;, 0)
            bkp[i] := NumGet(pfn[i], 0, &quot;int64&quot;)
        }
    }
 
    if (A_PtrSize=8) {  ; Disable SetForegroundWindow and ShowWindow.
        NumPut(0x0000C300000001B8, pfn[1], 0, &quot;int64&quot;)  ; return TRUE
        NumPut(0x0000C300000001B8, pfn[2], 0, &quot;int64&quot;)  ; return TRUE
    } else {
        NumPut(0x0004C200000001B8, pfn[1], 0, &quot;int64&quot;)  ; return TRUE
        NumPut(0x0008C200000001B8, pfn[2], 0, &quot;int64&quot;)  ; return TRUE
    }
 
    static cmds := {ListLines:65406, ListVars:65407, ListHotkeys:65408, KeyHistory:65409}
    cmds[Command] ? DllCall(&quot;SendMessage&quot;, &quot;ptr&quot;, A_ScriptHwnd, &quot;uint&quot;, 0x111, &quot;ptr&quot;, cmds[Command], &quot;ptr&quot;, 0) : 0
 
    NumPut(bkp[1], pfn[1], 0, &quot;int64&quot;)  ; Enable SetForegroundWindow.
    NumPut(bkp[2], pfn[2], 0, &quot;int64&quot;)  ; Enable ShowWindow.
 
    ControlGetText, text,, ahk_id %hEdit%
    return text
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 14 Feb 2017 19:16:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112494#p112494</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112487#p112487</link>
			<description><![CDATA[<div class="codebox"><pre><code>b	:= [1268, 415, 0], b.name := &quot;Lol, ti snachala imya zaday, a patom schitivay&quot;
MsgBox % b.name &quot;`n&quot; b[2]</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Tue, 14 Feb 2017 18:11:14 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112487#p112487</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112476#p112476</link>
			<description><![CDATA[<div class="quotebox"><cite>floppy пишет:</cite><blockquote><p>В каком же виде хранится имя переменной (или подмассива), что к нему нет доступа?</p></blockquote></div><p>Хранится в памяти процесса в текстовом виде, доступ есть, но адрес, по которому его считывать, неизвестен.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 14 Feb 2017 17:27:59 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112476#p112476</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112474#p112474</link>
			<description><![CDATA[<p>В данном случае просто в виде <span class="bbu">содержания</span> этой переменной, её имя не имеет никакого значения.<br />Есть другой тип массивов:<br /></p><div class="codebox"><pre><code>blanks := {blank1:[1268, 345, 0]}
MsgBox % blanks[&quot;blank1&quot;][1]</code></pre></div><p>Но тут к ключу по индексу, не обратишься.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 14 Feb 2017 17:22:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112474#p112474</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112469#p112469</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, огромное спасибо за решение! Всё оказалось действительно просто. Но всё-таки интересно, возможно ли получить имя массива, а не содержание? Поискал на форуме &quot;получение имени переменной&quot; - также предлагают вносить её в массив со списком переменных, иначе имя переменной получить нельзя.. В каком же виде хранится имя переменной (или подмассива), что к нему нет доступа? Только в виде адреса?</p>]]></description>
			<author><![CDATA[null@example.com (floppy)]]></author>
			<pubDate>Tue, 14 Feb 2017 16:56:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112469#p112469</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112467#p112467</link>
			<description><![CDATA[<div class="quotebox"><cite>floppy пишет:</cite><blockquote><p>понадобилось получить имя подмассива blanks</p></blockquote></div><p>В этом (таком) массиве нет имён ключей, только индексы.<br />Если только так:</p><div class="codebox"><pre><code>blank1 :=	[1268, 345, 0, &quot;blank1&quot;]
blanks := [blank1]
MsgBox % blanks[1][4]</code></pre></div><div class="quotebox"><cite>floppy пишет:</cite><blockquote><p>обычно между x, y, w и h не требуются запятые</p></blockquote></div><p>Так должно работать<br /></p><div class="codebox"><pre><code>% &quot;x&quot; blanks[A_Index][1] &quot; y&quot; blanks[A_Index][2] &quot; w&quot; Wpic &quot; h&quot; Hpic</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 14 Feb 2017 16:36:53 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112467#p112467</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Обращение к двумерным массивам]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=112463#p112463</link>
			<description><![CDATA[<p>Доброго времени суток! Сегодня столкнулся с такой проблемой - не могу получить имя строки массива (или подмассива) в двумерном массиве. Помогите разобраться. Допустим, есть двумерный массив, заданный следующим образом:<br /></p><div class="codebox"><pre><code>blank1		:=	[1268, 345, 0]
blank2		:=	[1360, 345, 0]
blank3		:=	[1452, 345, 0]
blank4		:=	[1268, 415, 0]
blank5		:=	[1360, 415, 0]
blank6		:=	[1452, 415, 0]
blanks	:= [blank1, blank2, blank3, blank4, blank5, blank6]</code></pre></div><p>Когда нужно обратиться к ячейке массива, прописываю<br /></p><div class="codebox"><pre><code>MsgBox % blanks[4][1]</code></pre></div><p>И нет никаких проблем.&nbsp; Сегодня же понадобилось получить имя подмассива blanks, пробовал следующие варианты:<br /></p><div class="codebox"><pre><code>MsgBox % blanks[4]
MsgBox % blanks.4
MsgBox % blanks[4].Name
MsgBox % blanks.4.Name
MsgBox % blanks[4].Name()
MsgBox % blanks.4.Name()</code></pre></div><p>И несколько других.. В результате, получить имя подмассива так и не получилось. Он упорно воспринимает blanks[4] как массив и не желает выдавать его имя.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>Оффтоп: ранее также пытался использовать ячейки массива для координат gui-объектов.. Долго провозился, в итоге методом тыка нашёл рабочий вариант:<br /></p><div class="codebox"><pre><code>Loop % blanks.MaxIndex()
	Gui, Add	, Picture	, % &quot;x&quot;blanks[A_Index][1] &quot;, y&quot;blanks[A_Index][2] &quot;, w&quot;Wpic &quot;, h&quot;Hpic			, pictures\Items\Blank.png</code></pre></div><p>что достаточно странно, т.к. обычно между x, y, w и h не требуются запятые..Но без них он упорно воспринимал только первую координату (в данном куске кода - x).. Если где-либо более подробная информация о синтаксисе ahk при работе с массивами? В справке расписано всё достаточно скудно.</p></div></div>]]></description>
			<author><![CDATA[null@example.com (floppy)]]></author>
			<pubDate>Tue, 14 Feb 2017 16:27:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=112463#p112463</guid>
		</item>
	</channel>
</rss>
