Программистский юмор: Один забавный случай с Dll

 
Один забавный случай с Dll.
.
Преамбула.
.
Захотелось написать такой 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() и я не мог бы запустить скрипт совсем- это прекрасная диагностика и совсем без отладки! Но при текущей имплементации- происходит что-то достаточно забавное, чем я и решил с вами поделиться ;-).
 

процедура инициализации в def-файл попала... а деинициализации- нет. В итоге окно показывается, а поскольку нет вызова WM_CLOSE, то класс окна WTL кидает исключение и ломает метатрейдер ;-).


Ой как смешно, пацталом

Он падал сразу после вызова Alert, без паузы. Видимо, какая-то оптимизация находила вызов DeInit, понимала, что он обломится и тут же выгружала библиотеку Dll, которая ломала метатрейдер, причем в логи он ничего записать не успевал :-).

Ктулху Фтагн!

Ну а если так, серьезно-то программисты какие-то весьма странные люди, это даже не смешнее петросяна, но они ведь правда будут смеяться :(

ИМХО мое: программист-это клинический диагноз, который пора включать в МКБ10, как разновидность паранойи, с тенденцией к десоциализации и стойкой патологией эмоциональной сферы .

Прошу прощения, если кого-то задел, просто ИМХО.

 
ask >>:

Ой как смешно, пацталом

Ктулху Фтагн!

Ну а если так, серьезно-то программисты какие-то весьма странные люди, это даже не смешнее петросяна, но они ведь правда будут смеяться :(

ИМХО мое: программист-это клинический диагноз, который пора включать в МКБ10, как разновидность паранойи, с тенденцией к десоциализации и стойким отсутсвием эмоциаональной сферы (ее патологией).

Прошу прощения, если кого-то задел, просто ИМХО.

Трейдеров тогда тоже в МКБ. Как там, по-новому маниакально-депрессивный психоз называется? - БАР! (Биполярное Аффективное Расстройство)

 
ask >>:

Ну а если так, серьезно-то программисты какие-то весьма странные люди, это даже не смешнее петросяна, но они ведь правда будут смеяться :(

ИМХО мое: программист-это клинический диагноз, который пора включать в МКБ10, как разновидность паранойи, с тенденцией к десоциализации и стойкой патологией эмоциональной сферы .

Прошу прощения, если кого-то задел, просто ИМХО.

Вы знаете, это такой юмор, который интересен специалистам, работающим с Mql4 / Dll. 

В продолжение темы https://forum.mql4.com/ru/25622 хотя не так критично.

Остальным он действительно неинтересен.

.

Причем сама идея- показывать окно из Dll - вполне интересна.

Это позволяет гибко управлять процессом обработки и отображения данных.

В связи с этим, готовое решение о том, как запустить окно Wtl достаточно интересно.

.

ask, сделайте одолжение- попишите сюда еще что-нибудь- чтобы тема не пропала.

Пусть хоть денек повисит в топе.

.

Вот, кстати, Вы пишете- разновидность паранойи. А почему не аутизма / депрессии?

Определенные признаки паранойи, кстати, в Вашем посте есть.

Так что почитайте какую-нибудь хорошую книгу по психиатрии.

.


 
Svinozavr >>:

Трейдеров тогда тоже в МКБ. Как там, по-новому маниакально-депрессивный психоз называется? - БАР! (Биполярное Аффективное Расстройство)


Хотелось бы уточнить, что осмотры практически здоровых (по крайней мере, они так думают) лиц тоже есть в МКБ10, например Z00.8. Да и здровых людей, наверное, не бывает, бывают плохо обследованные :)))
 
Svinozavr >>:

Трейдеров тогда тоже в МКБ. Как там, по-новому маниакально-депрессивный психоз называется? - БАР! (Биполярное Аффективное Расстройство)

Ну и трейдеров туда же, согласен. Но тогда трейдер-программист-это вдвойне диагноз, с неблагоприятным, видимо, прогнозом :) Шучу.

 
Блин, вот уж не думал, что медработников стока на форуме :)
 
AdwareRu >>:
Блин, вот уж не думал, что медработников стока на форуме :)

А почему сразу медработников?

Я работал с МКБ10, но исключительно в контексте систем БазикМед, ТелеМед.

Не цитирую исключительно по причине неинтереса к содержимому классификатора.
 
AdwareRu >>:
Блин, вот уж не думал, что медработников стока на форуме :)

И я тоже не мед.работник. (Но и не то, что вы подумали! В смысле, не пациент.))) Просто в курсе.

 
jartmailru >>:

А почему сразу медработников?

Я работал с МКБ10, но исключительно в контексте систем БазикМед, ТелеМед.

Не цитирую исключительно по причине неинтереса к содержимому классификатора.

Вообще сделал вывод прочитав следующее:

jartmailru писал(а) >>

Вот, кстати, Вы пишете- разновидность паранойи. А почему не аутизма / депрессии?
Определенные признаки паранойи, кстати, в Вашем посте есть. 
Так что почитайте какую-нибудь хорошую книгу по психиатрии.

Но нет так нет

 
jartmailru >>:
Один забавный случай с Dll.
.
Я извиняюсь за такой вопрос, но есть ли в этом какая-то логика? Я бы понял, если бы еще при старте "оптимизатор" находил проблему с функцией DeInit() и я не мог бы запустить скрипт совсем- это прекрасная диагностика и совсем без отладки! Но при текущей имплементации- происходит что-то достаточно забавное, чем я и решил с вами поделиться ;-).

Нет тут логики никакой. Я вот пару недель назад упоминал случай с пропуском инструкций в mql-программе, мне тоже никто(почти) не поверил:) По моему скромному мнению, корень зла кроется в байт-коде, в который вумный металанг не очень прямо встраивает вызовы к ДЛЛ и работу с threads. Не знаю, в пятом обещают нормальный объектный код в ехешнике, может от этого что-нибудь поменяется.

Причина обращения: