<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; А хотите lua консольку в quik?]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=431&amp;type=atom" />
	<updated>2023-02-21T05:44:55Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=431</id>
		<entry>
			<title type="html"><![CDATA[Re: А хотите lua консольку в quik?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4141#p4141" />
			<content type="html"><![CDATA[<p>Прикольный трюк! <br /><span class="postimg"><img src="https://smailik.top/gif/funi01018.gif" alt="https://smailik.top/gif/funi01018.gif" /></span></p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2023-02-21T05:44:55Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4141#p4141</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[А хотите lua консольку в quik?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4140#p4140" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>-- нельзя конечно взять и вызвать произвольную функцию из dll, функция должна соответствовать типу lua_CFunction
-- но в частном случае, когда функция без аргументов и возвращает bool, это работает
package.loadlib(&#039;kernel32.dll&#039;,&#039;AllocConsole&#039;)(true)

-- подключим потоки ввода-выовода к консольке
io.output(&#039;CONOUT$&#039;)
io.input(&#039;CONIN$&#039;)

-- все, теперь можно читать из io.input и писать в io.output. print() почему-то не работает, но при желании его можно переопределить

function main()
 io.write(&#039;&gt; &#039;)
 io.flush()

 l = io.read(&#039;l&#039;)
 while l do
 -- можно выполнять команды как-то примерно так:
  f,e = load(l)
  if f then
    s,r = pcall(f)
    if not s then
      io.write(&quot;Error call: &quot;);
    end
    io.write(r == nil and &#039;&#039; or tostring(r),&#039;\n&#039;)
  else
    io.write(&quot;Error load: &quot;, e, &quot;\n&quot;);
  end
  io.write(&#039;&gt; &#039;)
  io.flush()
  l = io.read(&#039;l&#039;)
 -- чтобы выйти, надо нажать Ctrl-Z и Enter
 end
 
 -- почистим за собой и закроем консольку
 -- закрывать консольное окошко крестиком в правом верхнем углу нельзя - квик помрет
 io.close(io.output()) 
 io.close(io.input()) 
 package.loadlib(&#039;kernel32.dll&#039;,&#039;FreeConsole&#039;)(true)
end</code></pre></div>]]></content>
			<author>
				<name><![CDATA[barlone]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3397</uri>
			</author>
			<updated>2023-02-21T05:26:39Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4140#p4140</id>
		</entry>
</feed>
