<?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; Стек построенный на Memory Mapped File]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=201</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=201&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Стек построенный на Memory Mapped File».]]></description>
		<lastBuildDate>Fri, 09 Dec 2016 05:44:25 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Стек построенный на Memory Mapped File]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2057#p2057</link>
			<description><![CDATA[<p><strong>Вопрос закрыт!</strong></p><p>При замене:<br /></p><div class="codebox"><pre><code>//функция инициализации
static int init ( lua_State* L, struct stack *stk){

    stk-&gt;top = 0;
    stk-&gt;elem[stk-&gt;top] = 10;//         &lt;------------
...</code></pre></div><p>На:<br /></p><div class="codebox"><pre><code>//функция инициализации
static int init ( lua_State* L, struct stack *stk){

    stk-&gt;top = 0;
    stk-&gt;elem[stk-&gt;top] = 10.1 ;//         &lt;------------
...</code></pre></div><p>Все заработало <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> и стало ясно.</p>]]></description>
			<author><![CDATA[null@example.com (art)]]></author>
			<pubDate>Fri, 09 Dec 2016 05:44:25 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2057#p2057</guid>
		</item>
		<item>
			<title><![CDATA[Стек построенный на Memory Mapped File]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2056#p2056</link>
			<description><![CDATA[<p>По подобию Стека фиксированного размера, построенного на массиве организую стек на Memory Mapped File в DLL под QLua.</p><p>При размещении строчек кода в вызываемой функции из &quot;main&quot; функции- данные передаются<br /></p><div class="codebox"><pre><code>// вызываемая функция
static int BBA(lua_State* L){
...
// код записи побайтовой числа типа double      
double h = lua_tonumber(L, -1);
 lua_pop(L, 1);

/*для общей картины
union easy{
    double *d;
    size_t *s_t;
    BYTE *pb;
} q_type;
*/

q_type.d = &amp;h;

if (hFileMap_HC) {
    PBYTE pb = (PBYTE)(MapViewOfFile(hFileMap_HC, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 1024));

    if (pb != NULL){
       if (!pb[0]!= 0){
                memcpy(pb,q_type.pb ,sizeof(double));
                }
            } 
    UnmapViewOfFile(pb);
    }
...
}

// основная функция
static int forLua_main(lua_State* L){
...
BBA(L);
...
}</code></pre></div><p> </p><br /><p>При попытки создать отдельную функцию инициализации стека данные не записываются - ничего не могу понять.</p><div class="codebox"><pre><code>struct stack{
    double elem[STACK_MAX];
    size_t top;
};

//функция инициализации
static int init ( lua_State* L, struct stack *stk){

    stk-&gt;top = 0;
    stk-&gt;elem[stk-&gt;top] = 10;
        
        
//    lua_pushnumber(L, stk-&gt;elem[stk-&gt;top]); 
//    при выводе сообщения Lua ругается пока не закрою окно сообщения
//    MessageBoxA(0,lua_tostring(L,-1), &quot;double&quot;, MB_OK);

    if (hFileMap_HC) {
        PBYTE pb = (PBYTE)(MapViewOfFile(hFileMap_HC, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 1024));
        if (pb != NULL)    {
                q_type.d = &amp;(stk-&gt;elem[stk-&gt;top]);
                memcpy(pb, q_type.pb, sizeof(double));
                q_type.s_t = &amp;(stk-&gt;top);
                memcpy(pb + sizeof(double), q_type.pb, sizeof(size_t));        
            }
        UnmapViewOfFile(pb);
    }
    return 0;
}

//инициализация в main
static int forLua_main(lua_State* L){
...
stack S;
init(L, &amp;S);
...
}</code></pre></div><p>Кто-нибудь???</p>]]></description>
			<author><![CDATA[null@example.com (art)]]></author>
			<pubDate>Thu, 08 Dec 2016 13:56:32 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2056#p2056</guid>
		</item>
	</channel>
</rss>
