процедура инициализации в def-файл попала... а деинициализации- нет. В итоге окно показывается, а поскольку нет вызова WM_CLOSE, то класс окна WTL кидает исключение и ломает метатрейдер ;-).
Ой как смешно, пацталом
Он падал сразу после вызова Alert, без паузы. Видимо, какая-то оптимизация находила вызов DeInit, понимала, что он обломится и тут же выгружала библиотеку Dll, которая ломала метатрейдер, причем в логи он ничего записать не успевал :-).
Ктулху Фтагн!
Ну а если так, серьезно-то программисты какие-то весьма странные люди, это даже не смешнее петросяна, но они ведь правда будут смеяться :(
ИМХО мое: программист-это клинический диагноз, который пора включать в МКБ10, как разновидность паранойи, с тенденцией к десоциализации и стойкой патологией эмоциональной сферы .
Прошу прощения, если кого-то задел, просто ИМХО.
Ой как смешно, пацталом
Ктулху Фтагн!
Ну а если так, серьезно-то программисты какие-то весьма странные люди, это даже не смешнее петросяна, но они ведь правда будут смеяться :(
ИМХО мое: программист-это клинический диагноз, который пора включать в МКБ10, как разновидность паранойи, с тенденцией к десоциализации и стойким отсутсвием эмоциаональной сферы (ее патологией).
Прошу прощения, если кого-то задел, просто ИМХО.
Трейдеров тогда тоже в МКБ. Как там, по-новому маниакально-депрессивный психоз называется? - БАР! (Биполярное Аффективное Расстройство)
Ну а если так, серьезно-то программисты какие-то весьма странные люди, это даже не смешнее петросяна, но они ведь правда будут смеяться :(
ИМХО мое: программист-это клинический диагноз, который пора включать в МКБ10, как разновидность паранойи, с тенденцией к десоциализации и стойкой патологией эмоциональной сферы .
Прошу прощения, если кого-то задел, просто ИМХО.
Вы знаете, это такой юмор, который интересен специалистам, работающим с Mql4 / Dll.
В продолжение темы https://forum.mql4.com/ru/25622 хотя не так критично.
Остальным он действительно неинтересен.
.
Причем сама идея- показывать окно из Dll - вполне интересна.
Это позволяет гибко управлять процессом обработки и отображения данных.
В связи с этим, готовое решение о том, как запустить окно Wtl достаточно интересно.
.
ask, сделайте одолжение- попишите сюда еще что-нибудь- чтобы тема не пропала.
Пусть хоть денек повисит в топе.
.
Вот, кстати, Вы пишете- разновидность паранойи. А почему не аутизма / депрессии?
Определенные признаки паранойи, кстати, в Вашем посте есть.
Так что почитайте какую-нибудь хорошую книгу по психиатрии.
.
Трейдеров тогда тоже в МКБ. Как там, по-новому маниакально-депрессивный психоз называется? - БАР! (Биполярное Аффективное Расстройство)
А почему сразу медработников?
Я работал с МКБ10, но исключительно в контексте систем БазикМед, ТелеМед.
Не цитирую исключительно по причине неинтереса к содержимому классификатора.
Вообще сделал вывод прочитав следующее:
jartmailru писал(а) >>
Вот, кстати, Вы пишете- разновидность паранойи. А почему не аутизма / депрессии?
Определенные признаки паранойи, кстати, в Вашем посте есть.
Так что почитайте какую-нибудь хорошую книгу по психиатрии.
Один забавный случай с Dll.
.
Я извиняюсь за такой вопрос, но есть ли в этом какая-то логика? Я бы понял, если бы еще при старте "оптимизатор" находил проблему с функцией DeInit() и я не мог бы запустить скрипт совсем- это прекрасная диагностика и совсем без отладки! Но при текущей имплементации- происходит что-то достаточно забавное, чем я и решил с вами поделиться ;-).
Нет тут логики никакой. Я вот пару недель назад упоминал случай с пропуском инструкций в mql-программе, мне тоже никто(почти) не поверил:) По моему скромному мнению, корень зла кроется в байт-коде, в который вумный металанг не очень прямо встраивает вызовы к ДЛЛ и работу с threads. Не знаю, в пятом обещают нормальный объектный код в ехешнике, может от этого что-нибудь поменяется.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
.
Преамбула.
.
Захотелось написать такой Dll, чтобы он вывел на экран отдельное Wtl-ное окно, в котором пользователь мог бы делать что-то интересное. С этой задачей разобрался: нужно запустить отдельный поток- и из него проинициализировать разные Wtl-ные вещи типа Module/message loop и показать окно. Для того, чтобы выйти хорошо- нужно вызвать процедуру деинициализации UI, которая тупо шлет WM_CLOSE и ждет, пока окно закроется.
.
Как часто случается, в результате ошибки программиста :-) процедура инициализации в def-файл попала... а деинициализации- нет. В итоге окно показывается, а поскольку нет вызова WM_CLOSE, то класс окна WTL кидает исключение и ломает метатрейдер ;-).
.
История.
.
Вот текст скрипта
.
int start()
{
Init();
for(;;) { Sleep(1000); if(IsStopped()) { break; } }
Alert("Deinit-1");
Sleep(5000);
DeInit(); <-- этот вызов не удастся
return(0);
}
.
Вопрос: в какой момент времени падал метатредер?
После return (0)?
Нет :-).
.
Он падал сразу после вызова Alert, без паузы. Видимо, какая-то оптимизация находила вызов DeInit, понимала, что он обломится и тут же выгружала библиотеку Dll, которая ломала метатрейдер, причем в логи он ничего записать не успевал :-).
.
Я извиняюсь за такой вопрос, но есть ли в этом какая-то логика? Я бы понял, если бы еще при старте "оптимизатор" находил проблему с функцией DeInit() и я не мог бы запустить скрипт совсем- это прекрасная диагностика и совсем без отладки! Но при текущей имплементации- происходит что-то достаточно забавное, чем я и решил с вами поделиться ;-).