<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Некоторые нюансы LUA. Прошу подсказать.]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=178&amp;type=atom" />
	<updated>2018-04-16T07:31:22Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=178</id>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=2206#p2206" />
			<content type="html"><![CDATA[<p>Не в этом дело.</p>]]></content>
			<author>
				<name><![CDATA[Normanmn]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3074</uri>
			</author>
			<updated>2018-04-16T07:31:22Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=2206#p2206</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1843#p1843" />
			<content type="html"><![CDATA[<p><strong>CyberTrader</strong>,</p><p>вы сначала прячете всё, потом локальные таблицы (массивы) объявляете, а после пытаетесь с трудом дотянуться до того, что по сути в глобальных переменных S1, S2 и т.д. уже лежит готовое. <img src="https://quik2dde.ru/img/smilies/wink.png" width="15" height="15" alt="wink" /></p><p>Предлагаю сразу контролы помещать в таблицу, а потом к ней обращаться. Как-то так примерно:</p><div class="codebox"><pre><code>con = {
    vcl.FloatSpinEdit(M, {Name = &#039;SU1&#039;}),
    vcl.FloatSpinEdit(M, {Name = &#039;SU2&#039;})
}</code></pre></div><p>И дальше в любом месте пожалуйста перебирайте массив con, где уже содержатся нужные вам элементы. Ну и не забывайте при OnClick = function (<strong>Sender</strong>), часто этого достаточно.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2015-12-06T13:28:08Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1843#p1843</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1841#p1841" />
			<content type="html"><![CDATA[<p>Тоже потребовалась похожая задача: использовать строку как имя объекта:<br /></p><div class="codebox"><pre><code>S1 = vcl.FloatSpinEdit(M, {Name = &#039;SU1&#039;})
SU1 = vcl.ComboBox(M, {Items=&#039;1\n2&#039;, ReadOnly=true})
S2 = vcl.FloatSpinEdit(M, {Name = &#039;SU2&#039;})
SU2 = vcl.ComboBox(M, {Items=&#039;1\n2&#039;, ReadOnly=true})
...
vcl.BitBtn(M, {OnClick = function ()
  local con = {S1, S2, ... SN}
  for i = 1, #con do
    local Name = con[i].Name
    if &lt;тут использовать контрол с именем Name, например SU1&gt;.ItemIndex ~= 0 then
      ...
    end
  end  
end</code></pre></div>]]></content>
			<author>
				<name><![CDATA[CyberTrader]]></name>
				<uri>https://quik2dde.ru/profile.php?id=248</uri>
			</author>
			<updated>2015-12-05T22:06:04Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1841#p1841</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1825#p1825" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>GREEN_X5 пишет:</cite><blockquote><div class="codebox"><pre><code>-- нажимаем обе кнопки и получаем таблицу Tab={Button1=&quot;да&quot;, Button2=&quot;да&quot;}</code></pre></div></blockquote></div><p>Докопаться какой Lua переменной присвоена &quot;ссылка на объект&quot; - не получится.<br />Но наверняка вашу задачу можно решить задачу иначе, только надо знать что за задача.</p><p>Как минимум можно назначив кнопке явно нужное имя в поле Name, после чего получать это имя из Sender.Name<br />Оно не обязано совпадать с Lua-переменной, но по нему можно идентифицировать кнопку.</p><p>Вы опишите какую задачу планируете решать, отдельным топиком про QVCLua, тогда можно будет подумать над подходящими решениями.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2015-11-30T10:00:28Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1825#p1825</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1824#p1824" />
			<content type="html"><![CDATA[<p>И всё-таки, сформулирую вопрос коротко - возможно получить имя переменной в строчном виде?<br />Задача например - упаковать в таблицу результаты нажатий кнопок под названиями переменных</p><div class="codebox"><pre><code>Tab={}

function Rec(sender)
  local Name= --получаем имя переменной по ссылке sender в строчном виде
  Tab[Name]=sender.Caption
end

Button1 = vcl.Button(Form,{Caption=&quot;да&quot;, OnClick =Rec})
Button2 = vcl.Button(Form,{Caption=&quot;да&quot;, OnClick =Rec})


-- нажимаем обе кнопки и получаем таблицу Tab={Button1=&quot;да&quot;, Button2=&quot;да&quot;}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-29T20:27:07Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1824#p1824</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1817#p1817" />
			<content type="html"><![CDATA[<p>И по двум функциям пробежаться можно, замечательно.<br /></p><div class="codebox"><pre><code>a = function (sender)  
sender.Caption=&quot;да&quot;
end

b = function (sender)  
sender.Top=60
end

Button1 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = function(x) a(x) b(x) end})</code></pre></div>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-26T10:12:23Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1817#p1817</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1816#p1816" />
			<content type="html"><![CDATA[<p>А ведь действительно, vcl же это делает! Работает, спасибо!</p>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-26T06:52:20Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1816#p1816</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1815#p1815" />
			<content type="html"><![CDATA[<p>Не проверял, но должно быть так:</p><div class="codebox"><pre><code>function a(sender)  
sender.Caption=&quot;да&quot;
end

Button1 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = a})
Button2 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = a})</code></pre></div><p>т.е. в обработчик OnClick&nbsp; и так передаётся параметр - объёкт, по которому клик произведён.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2015-11-26T06:20:21Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1815#p1815</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1814#p1814" />
			<content type="html"><![CDATA[<p>Понял, спасибо, собственно вот для чего затевалось, мультидоступ к обработчикам без .Name, с таблицами ссылки действительно работают.</p><div class="codebox"><pre><code>a=function(tab)  
tab.Caption=&quot;да&quot;
end

Button1 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = function() a(Button1) end})
Button2 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = function() a(Button2) end})</code></pre></div><p>А вот в этой части <br />OnClick = function() a(Button1) end<br />ссылку на задаваемую переменную Button1 никак не унифицировать, не обобщить? Ни где не хранится на этом этапе, ничем не выдернуть имя переменной? ) Типа вот такого</p><div class="codebox"><pre><code>Button1 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = function() a(var_self) end})
Button2 =    vcl.Button(Form,{Caption=&quot;нет&quot;, OnClick = function() a(var_self) end})</code></pre></div>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-26T05:59:24Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1814#p1814</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1813#p1813" />
			<content type="html"><![CDATA[<p>Это называется &quot;передача параметров по ссылке&quot; (а не &quot;по значению&quot;).<br />По ссылке в Lua передаются таблицы. Только таблицы, всегда таблицы.<br />Не таблицы передать по ссылке в функцию нельзя.</p><p>Например:<br /></p><div class="codebox"><pre><code>function Transform(point)
    point.x = point.x / 2
    point.y = point.y * 2
end

p = {
    x = 5,
    y = 6
}

print(p.x, p.y)
Transform(p)
print(p.x, p.y)</code></pre></div><p>При исполнении отобразит:</p><div class="codebox"><pre><code>5    6
2.5    12</code></pre></div><p>Видно, что поля таблицы изменились внутри функции Transform() и изменённые вернулись в основную программу.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2015-11-26T03:49:25Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1813#p1813</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Некоторые нюансы LUA. Прошу подсказать.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=1812#p1812" />
			<content type="html"><![CDATA[<p>Расширяю познания в LUA, а то уже тесновато в рамках известного мне. )<br />Прошу помочь, кому не лень. )</p><p>Вопрос:<br />Можно ли передать имя переменной в функцию (процедуру), чтобы там ею воспользоваться? Не значение, а именно имя! Как-н. вот так:</p><div class="codebox"><pre><code>function foo(v)
  [v] = 2 -- здесь иксу присваиваем 2
end

x=1
x=foo(&quot;x&quot;)</code></pre></div><p>Помнится в каком-то языке я встречал такую возможность, вроде в bat или vbs. А в Lua можно?</p>]]></content>
			<author>
				<name><![CDATA[GREEN_X5]]></name>
				<uri>https://quik2dde.ru/profile.php?id=206</uri>
			</author>
			<updated>2015-11-26T00:36:25Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=1812#p1812</id>
		</entry>
</feed>
