<?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=11942</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11942&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: сохранение глобального массива».]]></description>
		<lastBuildDate>Fri, 02 Sep 2016 23:29:45 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107277#p107277</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, я дурак и по привычке ставлю пробелы после запятой, многомерный массив не должен хранить в индексе запятую. Писал под вечер так что не судите строго.</p>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Fri, 02 Sep 2016 23:29:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107277#p107277</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107075#p107075</link>
			<description><![CDATA[<div class="quotebox"><cite>McFree пишет:</cite><blockquote><div class="codebox"><pre><code>Loop, % Bind[4, %A_Index%]</code></pre></div></blockquote></div><p>Не знаю, может это не единственная ошибка, но знаки процента вокруг A_Index не нужны. <strong>McFree</strong>, вам, скорее всего, рановато с классами, сначала нужно с простыми вещами разобраться.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 27 Aug 2016 14:15:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107075#p107075</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107051#p107051</link>
			<description><![CDATA[<div class="quotebox"><cite>McFree пишет:</cite><blockquote><p><strong>teadrinker</strong>, прошу прощения, прикрепил к ответу файлы для работы с этим скриптом</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Thu, 25 Aug 2016 20:59:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107051#p107051</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107050#p107050</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, прошу прощения, прикрепил к ответу файлы для работы с этим скриптом</p>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Thu, 25 Aug 2016 20:57:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107050#p107050</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107049#p107049</link>
			<description><![CDATA[<p>Всё, что касается игр, не пишите в ветке AHK.<br />Нет, это не то, что я имел в виду. Код не короткий, для демонстрации только проблемы там много лишнего. Кроме того, я не могу его запустить — у меня нет ни samp_udf.ahk, ни GetMyIP(), ни вашего ini-файла.<br />Посоветовать могу в каждом методе проверять какие значения переменным установлены через MsgBox.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 25 Aug 2016 20:13:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107049#p107049</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107035#p107035</link>
			<description><![CDATA[<p><strong>teadrinker</strong> тогда сделаю код минимальным:</p><p>Класс инициализации в файле initManager:<br /></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"><div class="codebox"><pre><code>
class Initializator
{
	initStrings() {
		j := 0
		Loop % NumTabs * 10
		{
			j++
			i := 0
			Loop, % Bind[4, %A_Index%]
			{
				i++
				
				IniRead, String, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Sting%i%, Text
				Bind[1,j, i] := String
			}
		}
	}
	initProfile() {
		msg := new Message()
		IfExist, Profiles/%Profile%/Settings.mbmf
		{
			IniRead, NumTabs, Profiles\%Profile%\Settings.mbmf, Main, NumTabs, 2
			IniRead, HkeyReload, Profiles\%Profile%\Settings.mbmf, Main, HKeyReload
			IniRead, HkeyPause, Profiles\%Profile%\Settings.mbmf, Main, HKeyPause
			IniRead, AutoUpdate, Profiles\%Profile%\Settings.mbmf, Main, AutoUpdate, &quot;true&quot;
			IniRead, UpdNotification, Profiles\%Profile%\Settings.mbmf, Main, UpdNotific, &quot;true&quot;
			IniRead, TrayLaunch, Profiles\%Profile%\Settings.mbmf, Main, TrayLaunch, &quot;false&quot;
		} else {
			msg.Info(&quot;Новый профиль настраивается, пожалуйста подождите&quot;, 3)
			FileCreateDir, %A_ScriptDir%\Profiles\%Profile%
			FileCreateDir, %A_ScriptDir%\Profiles\%Profile%\Hotkeys
			IniWrite, 2, Profiles\%Profile%\Settings.mbmf, Main, NumTabs
			IniWrite, none, Profiles\%Profile%\Settings.mbmf, Main, HKeyReload
			IniWrite, none, Profiles\%Profile%\Settings.mbmf, Main, HKeyPause
			IniWrite, true, Profiles\%Profile%\Settings.mbmf, Main, AutoUpdate
			IniWrite, true, Profiles\%Profile%\Settings.mbmf, Main, UpdNotific
			IniWrite, false, Profiles\%Profile%\Settings.mbmf, Main, TrayLaunch
			NumTabs := 2
			HKeyReload := &quot;none&quot;
			HKeyPause := &quot;none&quot;
			AutoUpdate := &quot;true&quot;
			UpdNotific := &quot;true&quot;
			TrayLaunch := &quot;false&quot;
		}
		Sys[1] := HkeyReload
		Sys[2] := HkeyPause
	}
	initSys() {
		IfExist,  Settings.mbmf
		{
			IniRead, Skin, Settings.mbmf, Main, Skin, Default
			IniRead, Profile, Settings.mbmf, Main, Profile, Default
		} else {
			IniWrite, Default, Settings.mbmf, Main, Skin
			IniWrite, Default, Settings.mbmf, Main, Profile
			IniWrite, %ID%, Settings.mbmf, Main, Key
			Skin := &quot;Default&quot;
			Profile := &quot;Default&quot;
		}
	}
	initBinds() {
		this.initStrings()
	}
}
</code></pre></div></div></div><p>Гланый файл скрипта:<br /></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"><div class="codebox"><pre><code>
#Persistent 
#SingleInstance force
#MaxThreadsPerHotkey 3
#MaxThreads 7
SendMessage, 0x50,, 0x4190419,, A
;
;		includes
;
#Include samp_udf.ahk
#include InitManager.ahk
;
;		Objects
;
init := new Initializator()

;
;		globals
;
global ID := GetMyIP()
global NumTabs
global Profile
global Skin
global ThisBind

global HKReload
global HKPause
global ColTabs
global Autoupdat
global Answer
global TrayLoad

global Sys := []
global Bind := []	

;
;		initializations
;
init.initSys()
init.initProfile()
init.initBinds()
return
</code></pre></div></div></div><p>Во время исполнения функции <strong>init.initBinds()</strong> которая использует функцию из класса из своего класса <strong>initStrings()</strong> массив забивается значениями из ini файла. После работы с функциями класса <strong>Initializator</strong> массив все равно остается пустым. Во время использования самой функции <strong>initStrings()</strong> в массиве имеются значения, но после работы функции весь массив опять становится пустым.</p><p>Вроде как сделал более краткий код</p>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Wed, 24 Aug 2016 18:58:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107035#p107035</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107030#p107030</link>
			<description><![CDATA[<p>Ну так я ж не экстрасенс, я просто указал на ошибку в коде на основе тех данных, что вы представили. Может оказаться, что вы ещё что-нибудь скрыли, как я могу оценить правильность кода?</p><p>Вообще, чтоб получить внятный ответ, в вопросе нужно представить <span class="bbu">минимальный</span> код, который <span class="bbu">любой может запустить</span>, и который <span class="bbu">чётко демонстрирует проблему</span>. Научившись составлять такой код, вы увидите, что многие вопросы отпадут сами собой.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 24 Aug 2016 18:11:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107030#p107030</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107029#p107029</link>
			<description><![CDATA[<p><strong>teadrinker</strong>,Это гобальная переменная которая инициализируется так же в этом классе из ini. Вот все глобальные переменные:</p><div class="codebox"><pre><code>
global ID := GetMyIP()
global Version := &quot;2.6&quot;
global Author := &quot;McFree&quot;
global NumTabs
global Profile
global Skin
global AutoUpdate
global UpdNotification
global TrayLaunch
global ThisBind

global THK1
global THK2
global THK1
global CHK
global WHK
global SHK
global AddTime
global AddText
global HKReload
global HKPause
global ColTabs
global Autoupdat
global Answer
global TrayLoad

global Sys := []
global Bind := []	
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Wed, 24 Aug 2016 18:04:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107029#p107029</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107027#p107027</link>
			<description><![CDATA[<p>А метод класса-то откуда об этом узнает?<br />Например, у вас есть такой метод:<br /></p><div class="codebox"><pre><code>	initHotKeys() {
		Loop % NumTabs * 10
		{
			IniRead, HKey, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Main, HKey, &quot;none&quot;
			Bind[5,%A_Index%] := HKey
		}
	}</code></pre></div><p>В нём NumTabs не задана, она там локальная.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 24 Aug 2016 17:34:37 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107027#p107027</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107026#p107026</link>
			<description><![CDATA[<p><strong>teadrinker</strong> NumTabs изменяется в ini файле, в данный момент она равна 3.</p>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Wed, 24 Aug 2016 17:05:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107026#p107026</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107024#p107024</link>
			<description><![CDATA[<p>У вас в каждом методе идёт:<br /></p><div class="codebox"><pre><code>Loop % NumTabs * 10</code></pre></div><p>А чему равна эта NumTabs?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 24 Aug 2016 16:43:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107024#p107024</guid>
		</item>
		<item>
			<title><![CDATA[AHK: сохранение глобального массива]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=107023#p107023</link>
			<description><![CDATA[<p>Имеется скрипт в который подключается второй скрипт с классом Initializator. В основном файле прописывается строка после пдключения <strong>init := new Initializator()</strong>, после создается пустой глобальный массив <strong>global Binds := []</strong>. После всех этих действий идет вызов одной из функций класса <strong>init.initBinds()</strong> который обращается к функциям из этого же класса (в спойлере код файла с классом).</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"><div class="codebox"><pre><code>
class Initializator
{		
	initStrings() {
		j := 0
		Loop % NumTabs * 10
		{
			j++
			i := 0
			Loop, % Bind[4, %A_Index%]
			{
				i++
				
				IniRead, String, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Sting%i%, Text
				Bind[1,j, i] := String
			}
		}
	}
	initWaitings() {
		j := 0
		Loop % NumTabs * 10
		{
			j++
			i := 0
			Loop, % Bind[4, %A_Index%]
			{
				i++
				IniRead, Time, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Sting%i%, Wait
				Bind[2,j, i] := Time
			}
		}
	}
	initPressEnters() {
		j := 0
		Loop % NumTabs * 10
		{
			j++
			i := 0
			Loop, % Bind[4, %A_Index%]
			{
				i++
				IniRead, Enters, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Sting%i%, TEnter
				Bind[3,j, i] := Enters
			}
		}
	}
	initNumberStrings() {
		Loop % NumTabs * 10
		{
			IniRead, NumStrings, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Main, NumStrings, 0
			Bind[4,%A_Index%] := NumStrings
		}
	}
	initHotKeys() {
		Loop % NumTabs * 10
		{
			IniRead, HKey, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Main, HKey, &quot;none&quot;
			Bind[5,%A_Index%] := HKey
		}
	}
	initIsFlooders() {
		Loop % NumTabs * 10
		{
			IniRead, Flooder, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Main, Flooder, &quot;false&quot;
			Bind[6,%A_Index%] := Flooder
		}
	}
	initTypeSends() {
		Loop % NumTabs * 10
		{
			IniRead, SendType, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Main, Type, &quot;false&quot;
			Bind[7,%A_Index%] := SendType
		}
	}
	initDefWaitings() {
		Loop % NumTabs * 10
		{
			IniRead, DWait, Profiles\%Profile%\Hotkeys\Hotkey%A_Index%.mbmf, Main, DefWaiting
			Bind[8,A_Index] := DWait
		}
	}
	initProfile() {
		msg := new Message()
		IfExist, Profiles/%Profile%/Settings.mbmf
		{
			IniRead, NumTabs, Profiles\%Profile%\Settings.mbmf, Main, NumTabs, 2
			IniRead, HkeyReload, Profiles\%Profile%\Settings.mbmf, Main, HKeyReload
			IniRead, HkeyPause, Profiles\%Profile%\Settings.mbmf, Main, HKeyPause
			IniRead, AutoUpdate, Profiles\%Profile%\Settings.mbmf, Main, AutoUpdate, &quot;true&quot;
			IniRead, UpdNotification, Profiles\%Profile%\Settings.mbmf, Main, UpdNotific, &quot;true&quot;
			IniRead, TrayLaunch, Profiles\%Profile%\Settings.mbmf, Main, TrayLaunch, &quot;false&quot;
		} else {
			msg.Info(&quot;Новый профиль настраивается, пожалуйста подождите&quot;, 3)
			FileCreateDir, %A_ScriptDir%\Profiles\%Profile%
			FileCreateDir, %A_ScriptDir%\Profiles\%Profile%\Hotkeys
			IniWrite, 2, Profiles\%Profile%\Settings.mbmf, Main, NumTabs
			IniWrite, none, Profiles\%Profile%\Settings.mbmf, Main, HKeyReload
			IniWrite, none, Profiles\%Profile%\Settings.mbmf, Main, HKeyPause
			IniWrite, true, Profiles\%Profile%\Settings.mbmf, Main, AutoUpdate
			IniWrite, true, Profiles\%Profile%\Settings.mbmf, Main, UpdNotific
			IniWrite, false, Profiles\%Profile%\Settings.mbmf, Main, TrayLaunch
			NumTabs := 2
			HKeyReload := &quot;none&quot;
			HKeyPause := &quot;none&quot;
			AutoUpdate := &quot;true&quot;
			UpdNotific := &quot;true&quot;
			TrayLaunch := &quot;false&quot;
		}
		Sys[1] := HkeyReload
		Sys[2] := HkeyPause
	}
	initSys() {
		IfExist,  Settings.mbmf
		{
			IniRead, Skin, Settings.mbmf, Main, Skin, Default
			IniRead, Profile, Settings.mbmf, Main, Profile, Default
		} else {
			IniWrite, Default, Settings.mbmf, Main, Skin
			IniWrite, Default, Settings.mbmf, Main, Profile
			IniWrite, %ID%, Settings.mbmf, Main, Key
			Skin := &quot;Default&quot;
			Profile := &quot;Default&quot;
		}
	}
	ActivateHotKeys() {
		j := 0
		Loop % NumTabs * 10
		{
			j++
			i := 0
			Loop, % Bind[4, A_Index]
			{
				i++
				Bind[2,j, i] := Time
			}
		}
	}
	initBinds() {
		this.initHotKeys()
		this.initNumberStrings()
		this.initStrings()
		this.initWaitings()
		this.initPressEnters()
		this.initIsFlooders()
		this.initTypeSends()
		this.initDefWaitings()
	}
}
</code></pre></div></div></div><p>При заполнении массива через классовые функции он не сохраняет все данные в массиве. В чем может быть проблема? Если у меня грубая ошибка с классами то где я мог ошибиться?</p>]]></description>
			<author><![CDATA[null@example.com (McFree)]]></author>
			<pubDate>Wed, 24 Aug 2016 16:04:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=107023#p107023</guid>
		</item>
	</channel>
</rss>
