<?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=390&amp;type=atom" />
	<updated>2022-10-03T12:24:08Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=390</id>
		<entry>
			<title type="html"><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3711#p3711" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-10-03T12:24:08Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3711#p3711</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3665#p3665" />
			<content type="html"><![CDATA[<p>Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-09-28T12:43:43Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3665#p3665</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3664#p3664" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-09-28T12:14:51Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3664#p3664</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вызов функций Lua из С/С++]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3663#p3663" />
			<content type="html"><![CDATA[<p>[url]https://www.lua.org/pil/25.2.html[/url]</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-09-28T12:05:11Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3663#p3663</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Вызов функций Lua из С/С++]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3662#p3662" />
			<content type="html"><![CDATA[<p>Подскажите пожалуйста, возможно ли вызывать функции Lua из C++ ?</p><p>Ну к примеру вызвать CreateDataSource() ?<br />И передать данные ?</p>]]></content>
			<author>
				<name><![CDATA[Serg_]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3371</uri>
			</author>
			<updated>2022-09-28T10:57:10Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3662#p3662</id>
		</entry>
</feed>
