<?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=453&amp;type=atom" />
	<updated>2024-10-15T09:51:33Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=453</id>
		<entry>
			<title type="html"><![CDATA[Re: Проблема с обновлением данных в таблице созданной из Lua (Решено)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4360#p4360" />
			<content type="html"><![CDATA[<p>Не знаю в чем проблема. Но пришлось добавить такой костыль, сразу после записи новых данных в таблицу:</p><div class="codebox"><pre><code> if tableMain ~= nil then
        InsertRow(tableMain, -1)
        local rowsCount = GetTableSize(tableMain)
        DeleteRow(tableMain,rowsCount)
end</code></pre></div><p>Т.е. после обновления данных в таблице, создаем пустую строку и удаляем ее. Во время работы скрипта, пустая строка даже не успевает отобразиться</p>]]></content>
			<author>
				<name><![CDATA[AgentSmit]]></name>
				<uri>https://quik2dde.ru/profile.php?id=221</uri>
			</author>
			<updated>2024-10-15T09:51:33Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4360#p4360</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Проблема с обновлением данных в таблице созданной из Lua (Решено)]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4359#p4359" />
			<content type="html"><![CDATA[<p>Уже 3 часа пытаюсь понять в чем причина. Не обновляются данные в таблице, пока не проведу по ней мышью.</p><p>Код уж совсем простой и тут какие-то у меня не понятки вышли. Может кто сталкивался с такой проблемой. Данные через message() идут нормально, а вот в таблице не обновляются пока окно таблицы не получит какое-либо сообщение</p><p>Сам код:</p><div class="codebox"><pre><code>-- Переменны для замены на данные хранящиеся в настройках скрипта
local secCode = &quot;MMZ4&quot;

local atrID = &quot;MXI_ATR&quot;
local priceID = &quot;MXI_PRICE&quot;

--Переменные для замены на данные получаемые из терминала
local digit = 2

--Переменные глобальных таблиц и окон
local tableMain = nil
local hwndMain = nil

local isRun = true
function main()
    message(&quot;Hello. This is MambaBot&quot;,1)
    while isRun do
        if tableMain ~= nil then
            if IsWindowClosed(tableMain) then
                isRun = false
            end            
        end
        sleep(1000)
    end
    message(&quot;MambaBot has stopped&quot;)
end

function OnParam(class, sec)
    if(class==&quot;SPBFUT&quot; and sec==secCode) then
        if tableMain ~= nil then
            --Обновляем данные в ячеках главной таблицы
            SetCell(tableMain, 2, 1, getInfoParam(&quot;SERVERTIME&quot;), 0)
            --message(getInfoParam(&quot;SERVERTIME&quot;))
            local atrVal, count, legend
            atrVal, count, legend = getCandlesByIndex(atrID, 0, getNumCandles(atrID) - 1, 1)
            SetCell(tableMain, 7, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, atrVal[0].close), atrVal[0].close)

            local priceCandleVal
            priceCandleVal, count, legend = getCandlesByIndex(priceID, 0, getNumCandles(priceID) - 1, 1)
            print(count)
            SetCell(tableMain, 3, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].open), priceCandleVal[0].open)
            SetCell(tableMain, 4, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].high), priceCandleVal[0].high)
            SetCell(tableMain, 5, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].low), priceCandleVal[0].low)
            SetCell(tableMain, 6, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].close),
                priceCandleVal[0].close)
            message(string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].close))
        end
    end
end

function OnInit(script_path)

    tableMain = AllocTable()
    AddColumn(tableMain,0,&quot;param&quot;,true,QTABLE_STRING_TYPE,12)
    AddColumn(tableMain,1,&quot;value&quot;,true,QTABLE_STRING_TYPE,12)

    hwndMain = CreateWindow(tableMain)
    SetWindowCaption(tableMain,&quot;MambaBot Main&quot;)
    local rowNum = 1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Sec code&quot;,0)
    SetCell(tableMain,rowNum,1,secCode,0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Time&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;00:00:00&quot;,0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Open&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;High&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Low&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Close&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;ATR value&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1
end

function OnStop(flag)
    if tableMain ~=nil then
        DestroyTable(tableMain)
    end
    isRun = false
    return 100
end</code></pre></div><p>Это всего лишь набросок будущего робота, просто на скоряк кодил, вспоминал как работать с таблицами и получением данных</p>]]></content>
			<author>
				<name><![CDATA[AgentSmit]]></name>
				<uri>https://quik2dde.ru/profile.php?id=221</uri>
			</author>
			<updated>2024-10-14T17:43:04Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4359#p4359</id>
		</entry>
</feed>
