Add/SetLabel

Страницы: 1
RSS
Add/SetLabel
 
Здравствуйте.


Насколько я понимаю, метки из луа выставляются асинхронно по отношению к скрипту. В этом случае:

  1. Как узнать, что метка отработана и соответствующий BMP файл более не требуется?
  2. Что происходит, когда метка еще не отработана, но из скрипта поступает новое указание типа setlabel?
Спасибо.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Вопрос оказался чересчур сложным, разработчики затруднились?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Здравствуйте,
Поясните что значит фраза "метка отработана"
 
Сергей.

Как мне представляется, по команде add_label происходит не фактическая отрисовка метки на графике, а прием исполняющей средой указания, что это надо сделать.

Собственно отрисовка происходит несколько позже.


Прав ли я? Если прав, то "отработкой" назовем фактическое нанесение метки на график, то есть полное исполнение указания.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
Как узнать, что метка отработана и соответствующий BMP файл более не требуется?
Согласно документации
"Функция возвращает числовой идентификатор метки. В случае неуспешного  завершения функция возвращает «nil»."
Цитата
s_mike@rambler.ru написал:
Что происходит, когда метка еще не отработана, но из скрипта поступает новое указание типа setlabel?
функции setlabel не существует. если имеется в виду SetLabelParams то согласно документации
"В случае успешного завершения функция возвращает «true», иначе – «false».  "
 
Сергей.

Я умею читать документацию.

Объясните мне пожалуйста, как устроен механизм меток в квике.

Пользовательский сСкрипт и "нечто, шлепающее битмапы на график" исполняются в разных потоках. Это верно?

Если это верно, значит, есть межпоточный обмен и какие-то очереди исполнения.

если и это верно, значит между моментом вызова addlabel и фактической установкой метки проходит время

если и это верно, значит есть 2 пути - скрипт пользователя останавливается на время работы этого "шлепающего нечто" (метки выполняются синхронно со скриптом) или не останавливается (асинхронно)

По вашей документации понять это невозможно. "Функция в случае успеха возвращает true" может означать как фактический успех намазывавания битмапа так и успешное завершение предварительных проверок и постановку в очередь на исполнение в случае асинхронного режима.



Почему я этим всем озадачен? Потому что я сильно подозреваю вариант асинхронной работы механизма заявок, выражающийся в том, что при большой загрузке основного потока терминала между получением true из addlabel  я успеваю удалить файл битмапа и собственно отрисовка не происходит. По понятным причинам написать тест, 100%но иллюстрирующий пролему нет возможности.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Добрый день,
   
    При работе с метками есть хранилище меток, которое хранит описание     параметров метки.
    При успешном завершении вызовов Add/SetLabel метка будет сохранена в     хранилище, но при этом, возможно, ещё не будет отрисована на     графике. Связана это с асинхронностью отрисовки содержимого окон     операционной системой.
 
Позвольте встряну.
Sergey Gorokhov, в вашем ответе нет главного: когда можно удалять BMP-файл c диска, но при этом быть уверенным, что метка уже будет отрисована и удаление файла не помешает отрисовке?
 
Цитата
swerg написал:
Позвольте встряну.
Sergey Gorokhov , в вашем ответе нет главного: когда можно удалять BMP-файл c диска, но при этом быть уверенным, что метка уже будет отрисована и удаление файла не помешает отрисовке?
Можно я тоже встряну.
А зачем удалять bmp-файл, который используется для отрисовки?

Так-то, по хорошему, его удалять нельзя (не следует) все время работы программы.
То, что квик не блокирует его при загрузке, это возможно недоработка, но, пока он есть на графике - файл должен быть, ибо в любой момент может понадобиться.
 
как я понял, удалять можно после закрытия квик или окна.
В остальных случаях - "асинхронно" означает "никто это не изучал "
 
Цитата
Николай Камынин написал:
как я понял, удалять можно после закрытия квик или окна.
В остальных случаях - "асинхронно" означает "никто это не изучал "
"после закрытия" - речи нет.
ТС, я так понимаю, хочет удалять файло буквально сразу после выставления метки ф-цией AddLabel.

"Асинхронно" - это асинхронно.
Ежели вы в курсе как работает виндовый цикл отрисовки, то это вас смущать не должно.
В общем виде дается команда "нарисуй мне это", а когда дойдет очередь - элемент будет отрисован на экране.
 
Цитата
swerg написал:
Позвольте встряну.
Sergey Gorokhov , в вашем ответе нет главного: когда можно удалять BMP-файл c диска, но при этом быть уверенным, что метка уже будет отрисована и удаление файла не помешает отрисовке?
как же нет?

Цитата
Sergey Gorokhov написал:
При успешном завершении вызовов Add/SetLabel метка будет сохранена в     хранилище,
вот и ответ
 
Цитата

Sergey Gorokhov написал:
> При успешном завершении вызовов Add/SetLabel метка будет сохранена в     хранилище,
вот и ответ
Сергей, на что это ответ?
Какая-то метка будет сохранена. Что входит в понятие "метка"  - совершенно не ясно.
Трактовать это можно как угодно, в том числе и так, что "параметры метки будут сохранены, а когда придёт время отрисовки - прочитаем картинку из файла".

Так что вы опять не ответили точно на вопрос, поэтому я и пишу, что ответа - нет.
 
При успешном завершении вызовов Add/SetLabel метка будет сохранена в     хранилище, после этого можно удалять файл.
 
Теперь понятно, спасибо.
Страницы: 1
Читают тему
Наверх