<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Вызов функций Lua из С/С++]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=390</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=390&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Вызов функций Lua из С/С++».]]></description>
		<lastBuildDate>Mon, 03 Oct 2022 12:24:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3711#p3711</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Для CreateDataSource() будет примерно такой код (не проверял!):</p><div class="codebox"><pre><code>/*
Из справки:
   TABLE data_source, STRING error_desc CreateDataSource (STRING class_code, STRING sec_code, NUMBER interval, [, STRING param])
*/

      lua_getglobal(L, &quot;CreateDataSource&quot;);  /* получить функцию, которую будем вызывать */
      lua_pushstring(L, &quot;TQBR&quot;);   /* положить на стек первый аргумент - код класса */
      lua_pushstring(L, &quot;LKOH&quot;);   /* положить на стек второй аргумент - код инструмента */
      lua_pushnumber(L, 1);   /* положить на стек третий аргумент - интервал */
      lua_pushstring(L, &quot;BID&quot;);   /* положить на стек четвертый аргумент - код параметра */
    
      /* вызываем функцию (4 аргумента, 2 результата) */
      if (lua_pcall(L, 4, 2, 0) != 0)
      {
         error(L, &quot;error running function `f&#039;: %s&quot;,  lua_tostring(L, -1));
         // либо здесь return с признаком ошибки
      }

      /* выполнено успешно, считываем результаты */
      ..........
      /* удаляем из стека два значения-результата */
      lua_pop(L, 2);</code></pre></div><p>Вместо многоточия надо вставить код вычитывания элементов таблицы из возвращенного результата.<br />Я не готов по памяти написать код чтения таблицы Lua на С++, нагуглите примеры.</p></blockquote></div><br /><p>Это код кстати не рабочий: ошибка вызова lua_pcall:</p><div class="codebox"><pre><code>error in error handling</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Mon, 03 Oct 2022 12:24:08 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3711#p3711</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3665#p3665</link>
			<description><![CDATA[<p>Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 28 Sep 2022 12:43:43 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3665#p3665</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3664#p3664</link>
			<description><![CDATA[<p>Для CreateDataSource() будет примерно такой код (не проверял!):</p><div class="codebox"><pre><code>/*
Из справки:
   TABLE data_source, STRING error_desc CreateDataSource (STRING class_code, STRING sec_code, NUMBER interval, [, STRING param])
*/

      lua_getglobal(L, &quot;CreateDataSource&quot;);  /* получить функцию, которую будем вызывать */
      lua_pushstring(L, &quot;TQBR&quot;);   /* положить на стек первый аргумент - код класса */
      lua_pushstring(L, &quot;LKOH&quot;);   /* положить на стек второй аргумент - код инструмента */
      lua_pushnumber(L, 1);   /* положить на стек третий аргумент - интервал */
      lua_pushstring(L, &quot;BID&quot;);   /* положить на стек четвертый аргумент - код параметра */
    
      /* вызываем функцию (4 аргумента, 2 результата) */
      if (lua_pcall(L, 4, 2, 0) != 0)
      {
         error(L, &quot;error running function `f&#039;: %s&quot;,  lua_tostring(L, -1));
         // либо здесь return с признаком ошибки
      }

      /* выполнено успешно, считываем результаты */
      ..........
      /* удаляем из стека два значения-результата */
      lua_pop(L, 2);</code></pre></div><p>Вместо многоточия надо вставить код вычитывания элементов таблицы из возвращенного результата.<br />Я не готов по памяти написать код чтения таблицы Lua на С++, нагуглите примеры.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 28 Sep 2022 12:14:51 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3664#p3664</guid>
		</item>
		<item>
			<title><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3663#p3663</link>
			<description><![CDATA[<p>[url]https://www.lua.org/pil/25.2.html[/url]</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 28 Sep 2022 12:05:11 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3663#p3663</guid>
		</item>
		<item>
			<title><![CDATA[Вызов функций Lua из С/С++]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3662#p3662</link>
			<description><![CDATA[<p>Подскажите пожалуйста, возможно ли вызывать функции Lua из C++ ?</p><p>Ну к примеру вызвать CreateDataSource() ?<br />И передать данные ?</p>]]></description>
			<author><![CDATA[null@example.com (Serg_)]]></author>
			<pubDate>Wed, 28 Sep 2022 10:57:10 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3662#p3662</guid>
		</item>
	</channel>
</rss>
