276

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

swerg пишет:

Есть какая-то причина нестабильности при перезапуске, но до неё еще никто не докопался, увы.

Прискорбно. Замечательно работает библиотека, но из-за этой нестабильности приходится все, что связано с визуальными формами, выводить в отдельный скрипт, который с основным взаимодействует через файлы.

277

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:

Добрый день!
Не подскажете, из-за чего скрипт, использующий библиотеку может 5 раз нормально запускаться, а на 6-й (или на любой другой) выдавать Unknown error. Possible unhandled exception.
Квик перегружаешь, опять несколько раз запускается, потом рушится.

Знакомая ситуация, сталкивался на этапе первых скриптов с библиотекой.
В каком-то месте неаккуратное обращение с библиотекой. Смотрите что посылаете на контролы. Как назначаете имена. И т.д.
При правильном обращении не должно быть НИКАКИХ проблем НИКОГДА. Хоть 1000 раз подряд запускайте скрипт.

278

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:
masalexven пишет:

Добрый день!
Не подскажете, из-за чего скрипт, использующий библиотеку может 5 раз нормально запускаться, а на 6-й (или на любой другой) выдавать Unknown error. Possible unhandled exception.
Квик перегружаешь, опять несколько раз запускается, потом рушится.

Знакомая ситуация, сталкивался на этапе первых скриптов с библиотекой.
В каком-то месте неаккуратное обращение с библиотекой. Смотрите что посылаете на контролы. Как назначаете имена. И т.д.
При правильном обращении не должно быть НИКАКИХ проблем НИКОГДА. Хоть 1000 раз подряд запускайте скрипт.

Прошу прощения за дурацкий вопрос. "контрол", это обработка события
"OnChange=Handler" в Вашем примере?
Имена я уже проверял, никаких пробелов, английские буквы.

279

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:

При правильном обращении не должно быть НИКАКИХ проблем НИКОГДА. Хоть 1000 раз подряд запускайте скрипт.

Вы сейчас говорите вот об этой библиотеке: [url=http://www.quik2dde.ru/static-img/qvcl/qvcl-0.5.0-rev.2.zip]qvcl-0.5.0-rev.2.zip[/url]? Или о пропатченной версии? Или у вас любая версия работает всегда стабильно?

280

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

CyberTrader пишет:
GREEN_X5 пишет:

При правильном обращении не должно быть НИКАКИХ проблем НИКОГДА. Хоть 1000 раз подряд запускайте скрипт.

Вы сейчас говорите вот об этой библиотеке: [url=http://www.quik2dde.ru/static-img/qvcl/qvcl-0.5.0-rev.2.zip]qvcl-0.5.0-rev.2.zip[/url]? Или о пропатченной версии? Или у вас любая версия работает всегда стабильно?

Работаю только с пропатченной. Может быть действительно в этом дело...

281 (2016-02-08 18:58:33 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:

Прошу прощения за дурацкий вопрос. "контрол", это обработка события
"OnChange=Handler" в Вашем примере?
Имена я уже проверял, никаких пробелов, английские буквы.

Например здесь

mainForm  = vcl.Form({Height = 400, Width = 900, Caption = "test", OnClose = OnStop})

Height, Width, Caption называю контролами. OnClose - тоже, хоть и принимает в значение функцию.

В первое время, когда допускал косяки в обращении к библиотеке, делал так - кастрировал готовый код до минимума, оставлял одну форму, запускал раз пять, не вылетает, возвращал по одному элементу, опять запускал 5 раз, в итоге находил проблемное место. Геморно конечно ))), но всегда срабатывало.

282

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:
CyberTrader пишет:
GREEN_X5 пишет:

При правильном обращении не должно быть НИКАКИХ проблем НИКОГДА. Хоть 1000 раз подряд запускайте скрипт.

Вы сейчас говорите вот об этой библиотеке: [url=http://www.quik2dde.ru/static-img/qvcl/qvcl-0.5.0-rev.2.zip]qvcl-0.5.0-rev.2.zip[/url]? Или о пропатченной версии? Или у вас любая версия работает всегда стабильно?

Работаю только с пропатченной. Может быть действительно в этом дело...

А что есть "пропатченная" и где ее взять? Я установил себе как раз по данной ссылке.

283

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:
masalexven пишет:

Прошу прощения за дурацкий вопрос. "контрол", это обработка события
"OnChange=Handler" в Вашем примере?
Имена я уже проверял, никаких пробелов, английские буквы.

Например здесь

mainForm  = vcl.Form({Height = 400, Width = 900, Caption = "test", OnClose = OnStop})

Height, Width, Caption называю контролами. OnClose - тоже, хоть и принимает в значение функцию.

Спасибо, понял, сейчас посмотрю все свойства всех объектов.

284 (2016-02-08 19:01:06 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:
GREEN_X5 пишет:
CyberTrader пишет:

Вы сейчас говорите вот об этой библиотеке: [url=http://www.quik2dde.ru/static-img/qvcl/qvcl-0.5.0-rev.2.zip]qvcl-0.5.0-rev.2.zip[/url]? Или о пропатченной версии? Или у вас любая версия работает всегда стабильно?

Работаю только с пропатченной. Может быть действительно в этом дело...

А что есть "пропатченная" и где ее взять? Я установил себе как раз по данной ссылке.

Сможете самостоятельно собрать библиотеку из исходников? Где-то mbul давал место куда добавить пару строк для беспроблемной финализации библиотеки при остановке qlua.

285

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:
masalexven пишет:
GREEN_X5 пишет:

Работаю только с пропатченной. Может быть действительно в этом дело...

А что есть "пропатченная" и где ее взять? Я установил себе как раз по данной ссылке.

Сможете самостоятельно собрать библиотеку из исходников? Где-то mbul давал место куда добавить пару строк для беспроблемной финализации библиотеки при остановке qlua.

А Вы этот путь уже не проделали или у Вас своя сборка переделанная?
Я скрипт делал четко по Вашему примеру, что Вы выкладывали в этой ветке.

286

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

У обьекта vcl.Label можно менять уже после определения всех свойств в теле программы по событию Caption? Или Caption задается изначально и редактировать его не желательно?

По факту все меняется. Просто думаю, где еще могут быть запрятаны ошибки, отчего все рушится.

287

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:

У обьекта vcl.Label можно менять уже после определения всех свойств в теле программы по событию Caption?

Да, конечно, у vcl.Label можно менять свойства: и расположение, текст, цвет и т.д.

Вы из main(), надеюсь, не обращаетесь к библиотеке?

288

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

swerg пишет:
masalexven пишет:

У обьекта vcl.Label можно менять уже после определения всех свойств в теле программы по событию Caption?

Да, конечно, у vcl.Label можно менять свойства: и расположение, текст, цвет и т.д.

Вы из main(), надеюсь, не обращаетесь к библиотеке?

Из main() я запускаю функцию, которая формирует массив и заполняет строки обьекта vcl.ComboBox через функцию:

function untab(fun,tab)
    if type(tab)=="table" then
        fun.Items = {}
        for _,i in ipairs(tab) do    fun.Items:Add(tostring(i))    end
    end
end

Так нельзя?

289

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Увы, нельзя.

290

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

swerg пишет:

Увы, нельзя.

Спасибо, подумаю, где эту инициализацию сделать.

291

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:
swerg пишет:

Увы, нельзя.

Спасибо, подумаю, где эту инициализацию сделать.

Что там думать? Сформируйте массив до main.

292

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr пишет:
masalexven пишет:
swerg пишет:

Увы, нельзя.

Спасибо, подумаю, где эту инициализацию сделать.

Что там думать? Сформируйте массив до main.

Уже. Сейчас тестирую на ошибку.

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Здравствуйте. есть поле ввода

PriceField = VCL.Edit(mainForm, {Name = "Edit", top=50, left=50, Width=60, Disabled})
PriceField.Text = last_price()

функция  last_price() запрашивает последнюю цену.
Можно ли обновлять значение поля когда обновляется значение цены?
Сейчас оно статично. скрипт один раз запросил цену и рисует ее всегда, хотя по факту цена меняется каждую секунду

294

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

Валентос пишет:

Здравствуйте. есть поле ввода

PriceField = VCL.Edit(mainForm, {Name = "Edit", top=50, left=50, Width=60, Disabled})
PriceField.Text = last_price()

функция  last_price() запрашивает последнюю цену.
Можно ли обновлять значение поля когда обновляется значение цены?
Сейчас оно статично. скрипт один раз запросил цену и рисует ее всегда, хотя по факту цена меняется каждую секунду

function OnParam (ccode, sec)
  if sec == "RIH6" then
     PriceField.Text = last_price()
  end
end

295 (2016-02-10 16:05:23 отредактировано masalexven)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

kalikazandr пишет:
Валентос пишет:

Здравствуйте. есть поле ввода

PriceField = VCL.Edit(mainForm, {Name = "Edit", top=50, left=50, Width=60, Disabled})
PriceField.Text = last_price()

функция  last_price() запрашивает последнюю цену.
Можно ли обновлять значение поля когда обновляется значение цены?
Сейчас оно статично. скрипт один раз запросил цену и рисует ее всегда, хотя по факту цена меняется каждую секунду

function OnParam (ccode, sec)
  if sec == "RIH6" then
     PriceField.Text = last_price()
  end
end

Получается что заполнение свойств обьектов в main сувать нельзя, а в колбеки можно?
Вот здесь [url]http://quik2dde.ru/viewtopic.php?pid=1964#p1964[/url] я писал про заполнение ComboBox в main и мне сказали, что это недопустимо.

Скрипт все так и рушится непонятно от чего. В main вообще ничего нету уже.

296 (2016-02-10 16:16:43 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:

Получается что заполнение свойств обьектов в main сувать нельзя, а в колбеки можно?
Вот здесь [url]http://quik2dde.ru/viewtopic.php?pid=1964#p1964[/url] я писал про заполнение ComboBox в main и мне сказали, что это недопустимо.

Вам бы один раз понять что скрипт работает в двух потоках.
main() работает в собственном отдельном потоке, из него НЕЛЬЗЯ обращаться к библиотеке.
Вот так НЕЛЬЗЯ

function main ()
  while is_run do sleep(50) 
     PriceField.Text = "5"
  end 
end

И даже вот так НЕЛЬЗЯ, потому что функция вызывается из main, а значит будет выполнена в его потоке

function toVCL ()
     PriceField.Text = last_price()
end

function main ()
  while is_run do sleep(50) 
     toVCL ()
  end 
end

Из колбеков обращайтесь без ограничений, они работают в основном потоке.
В main() можете готовить для отправки в библиотеку значения в переменные, но при этом не пользуйтесь lua библиотекой table, она потоко-небезопасна.

297 (2016-02-10 16:22:35 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:

Скрипт все так и рушится непонятно от чего. В main вообще ничего нету уже.

Много строк в скрипте? Какая ось? Версия терминала? Могу посмотреть, если хотите, высылайте на seaking@mail.ru вместе с Вашим экземпляром библиотеки. Если там вдруг "грааль", просто измените агоритм в этой функции, а то разбогатею вдруг за ваш счет. )) Но оставьте скрипт запускаемым. И так же падающим, конечно.

298 (2016-02-10 16:32:06 отредактировано masalexven)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:
masalexven пишет:

Получается что заполнение свойств обьектов в main сувать нельзя, а в колбеки можно?
Вот здесь [url]http://quik2dde.ru/viewtopic.php?pid=1964#p1964[/url] я писал про заполнение ComboBox в main и мне сказали, что это недопустимо.

Вам бы один раз понять что скрипт работает в двух потоках.
main() работает в собственном отдельном потоке, из него НЕЛЬЗЯ обращаться к библиотеке.
Вот так НЕЛЬЗЯ

function main ()
  while is_run do sleep(50) 
     PriceField.Text = "5"
  end 
end

И даже вот так НЕЛЬЗЯ, потому что функция вызывается из main, а значит будет выполнена в его потоке

function toVCL ()
     PriceField.Text = last_price()
end

function main ()
  while is_run do sleep(50) 
     toVCL ()
  end 
end

Из колбеков обращайтесь без ограничений, они работают в основном потоке.
В main() можете готовить для отправки в библиотеку значения в переменные, но при этом не пользуйтесь lua библиотекой table, она потоко-небезопасна.

Вы имеете в виду визуальную таблицу?
При заполнении ComboBox используется массив, а он тоже таблица по Lua понятиям. Вот так можно? Ось Windows 7 Домашняя расширенная 64x. Терминал QUIK 7.0.4.10. Грааля никакого нет, он в другом скрипте, здесь только примитивное диалоговое окно, которое по кнопке кидает значения а файл и все. Поэтому и удивляюсь, что рушится. Никаких сложных обработок.

classcodef = 'SPBFUT'
local table_sort = table.sort

function untab(fun,tab)
    if type(tab)=="table" then
        fun.Items = {}
        for _,i in ipairs(tab) do    fun.Items:Add(tostring(i))    end
    end
end

local function getSecurityFutsBI()
    local SecListTable = string_split(getClassSecurities(сlasscodef),",")
    table_sort(SecListTable)
    untab(SecurityCodeBI,SecListTable)
    SecListTable = nil
end

function Handler(Sender,...)
    local SN=Sender.Name
    if SN == "Exit" or SN == "myForm" then OnStop() end
    if SN == "ButtonFullWindow" or SN ==    "Full"     then myForm.windowstate = "wsMaximized" end
    if SN == "ButtonNormWindow" or SN ==    "Norm"    then myForm.windowstate = "wsNormal" end
    if SN == "SCodeBI"            then 
              message (SecurityCodeBI.Text)
    end
end

myForm        =  vcl.Form({Name = "myForm", Height = 280, Width = 260, Caption = "Стоп-заявка. ФОРТС рынок.", 
    Position = "poScreenCenter", OnClose = Handler})
    
mainMenu = vcl.MainMenu(myForm, "Menu")
mainMenu.showhint=true
mainMenu:LoadFromTable({
    {name="Menu", caption="&Меню",   
        submenu={
            {name="Full", caption="&Развернуть", onclick=Handler},
            {name="Norm", caption="&Нормально", onclick=Handler},
            {caption="-",},                    
            {name="Exit", caption="&Выход", onclick=Handler},  
        }
    }
})    

SecurityCodeBI = vcl.ComboBox(myForm, {Name = "SCodeBI", top=40, left=130, Width=120, Text="Выбрать...", OnChange=Handler, ShowHint=true, Hint="Инструмент, по которому выставится условие"})
getSecurityFutsBI()


function main()
    while is_run do
        sleep(20)
    end
    sleep(300) -- не убирать для версий QUIK от 6.16!!!
end

299 (2016-02-10 16:38:25 отредактировано masalexven)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

GREEN_X5 пишет:
masalexven пишет:

Скрипт все так и рушится непонятно от чего. В main вообще ничего нету уже.

Много строк в скрипте? Какая ось? Версия терминала? Могу посмотреть, если хотите, высылайте на seaking@mail.ru вместе с Вашим экземпляром библиотеки. Если там вдруг "грааль", просто измените агоритм в этой функции, а то разбогатею вдруг за ваш счет. )) Но оставьте скрипт запускаемым. И так же падающим, конечно.

Пришлю сейчас, заранее спасибо.
PS Выслал.

300 (2016-02-10 16:38:56 отредактировано GREEN_X5)

Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения

masalexven пишет:

Вы имеете в виду визуальную таблицу?
При заполнении ComboBox используется массив, а он тоже таблица по Lua понятиям. Вот так можно?...

Не понял вопроса. Я вроде не упоминал слово "таблица". Суть, которую хотел донести, например если пакуете в таблицу (lua массив) через table.insert в main(), то обращение к этой таблице (lua массив)  в основном потоке может вызвать крах скрипта. Или в лучшем случае nil значение в таблице. Соотв. и библиотека может обрушить терминал, если работает с этой таблицей.