как выгрузить dll - страница 7

 

AlexEro,

Я тут из отпуска вернулся, смотрю тебя эти ироды совсем одолели. Давай их вместе мочить.:)))))

HIdeYourRichess,

Хватит всякую херню говорить, проблема с выгрузкой ДЛЛ после удаления индикатора действительно существует, только связана она не с наличием или отсутствием ошибок в коде самой ДЛЛ, а с тем, что использование внешних библиотек разработчики ограничили т.н. "разумными пределами".

В чем эти пределы заключаются - хер его знает, объяснить подробнее они не удосужились. Тем не менее, пока библиотека в них укладывается, загрузка и выгрузка идут пучком.

Но как только опупевший программер начинает чересчур рьяно манипулировать памятью или хавать у терминала процессорное время на свои вычисления или вообще замахнется на святое (о ужас) - очередь сообщений программы terminal.exe, вот тогда злобный метаквот ему и отомстит.

Невыгрузка длл - это цветочки. Мне встречались такие вещи, от которых ваще волосы дыбом вставали. Например, индикаторы (в которых, заметьте, вызовы ДЛЛ отсутствовали) начинали лезть друг другу в адресное пространство. А то и вообще после вызова простенькой функции из ДЛЛ (даже совсем ничего не делающей - специально пробовал!) терминал начинал ни с того ни с сего пропускать(!) строки MQL программы. Цикл по таймсерии for(i=limit;i>=0;i--) после завершения вылетал нах в область отрицательных индексов (что непременно подтверждалось алертами)!!! Что поразило тогда больше всего, это то, что терминал.ехе, через энное количество миллисекунд осознав весь комизм ситуации и немедленно обосравшись, тут же прекращает лохматить бабушку и возвращает переменную i к своему родному значению 0. Типа ничего не было.

Рассуждать о том, что делает утилита regsvr, давайте будем после того, как будут исправлены ошибки с обработкой кода ех4 программ.

 
HideYourRichess >>:

Ещё раз повторяю - у меня нет проблем с dll ни где. Если у вас проблемы - то это именно проблемы вашего программирования, ни MS ни MT тут скорее всего не виновато. А то что нужно использовать "старый" VC - так это и так должно быть понятно.

Смешной человек.

Все решается тестированием.

.

Ну вот возьми ты dll, дерни ее из советника- если удастся удалить

при запущенном MT- ну всё, герой ты, поздравляю!

А не удастся- так зачем ты тут это пишешь? Для кого?

Чтобы Закачики видели, какое отношение их ждет при работе с твоими изделиями?

Или чтобы все точно знали, к кому не стоит обращаться за советом?

.

Вот я сейчас подумал, а какой ответ хотели бы получить люди, задавшие вопрос-

скорее всего такой: создайте Exe, грузаните в него Dll с динамической линковкой

через GetProcAddress() и подергайте за вызовы.

Если при работающем Exe после выгрузки Dll не удаляется - у вас проблемы.

Это называется получить реальный объективный результат вместо придумывания

каких-то "ошибок" "вашего программирования".

А вот уже к этому полученному результату можно придумать теорию :-)...

.

Теорий тут, каюсь, все напридумывали.

Но это из-за лени поднять ж% чтобы нормально ответить.

.

А VBAG... что же... браво!

Толковое описание проблемы, конкретный юзкейс, все резко стало понятно.

Хотя Вам, если Вы работаете с сервером приложений, замена dll скоро будет не так актуальна :-).

.

Честно сказать- для отладки лучше иметь *статические* данные в файле.

Пусть вам советник скинет данные в файл.

Я последние лет 7 читаю и пишу многомегабайтные файлы одной строкой- все крайне быстро.

Причем для tab-separated файла можно эту большую строку переделать в матрицу за 1 проход и без substr()'ов

(за десятые секунды), потому что разбивка на строки, а потом на стобцы работает как-то слишком

медленно (было несколько секунд). Чтобы, если вылетит что-то, то проблему можно было *гарантированно*

воспроизвести, а не зависеть от генераторов случайных чисел.

.

И при таком подходе (!) тестирование упростится. Потому что это не Dll.

Потому что кнопочка run В ОДИН КЛИК откомпилит, слинкует, запустит, а exe сам возьмет нужные данные.

.

P.S.: как раз проблемы с "программированием" решить можно...

 

Согласен с предыдущими камрадами в том, что свою DLL нужно в MT4 применять осторожно и ограниченно. Это означает ужЕ вышесказанное, а также то, что развивать свою DLL надо постепенно, и никакой экзотики. Ваша DLL - это временный гость в чужом доме полу-интерпретатора MQL4.

2 alsu: я болею, мне просто заняться нечем, умный проект вести в постели не могу, а вот разговор с птушниками больших умственных усилий не требовал, вот и накропал. всё жду когда ж у них совесть проснётся, да пока ея не видно, одна демагогия и пустословие ....

 
alsu >>:

Хватит всякую херню говорить, проблема с выгрузкой ДЛЛ после удаления индикатора действительно существует, только связана она не с наличием или отсутствием ошибок в коде самой ДЛЛ, а с тем, что использование внешних библиотек разработчики ограничили т.н. "разумными пределами".

alsu >>:

В чем эти пределы заключаются - хер его знает, объяснить подробнее они не удосужились. Тем не менее, пока библиотека в них укладывается, загрузка и выгрузка идут пучком.

Но как только опупевший программер начинает чересчур рьяно манипулировать памятью или хавать у терминала процессорное время на свои вычисления или вообще замахнется на святое (о ужас) - очередь сообщений программы terminal.exe, вот тогда злобный метаквот ему и отомстит.

Невыгрузка длл - это цветочки. Мне встречались такие вещи, от которых ваще волосы дыбом вставали. Например, индикаторы (в которых, заметьте, вызовы ДЛЛ отсутствовали) начинали лезть друг другу в адресное пространство. А то и вообще после вызова простенькой функции из ДЛЛ (даже совсем ничего не делающей - специально пробовал!) терминал начинал ни с того ни с сего пропускать(!) строки MQL программы. Цикл по таймсерии for(i=limit;i>=0;i--) после завершения вылетал нах в область отрицательных индексов (что непременно подтверждалось алертами)!!! Что поразило тогда больше всего, это то, что терминал.ехе, через энное количество миллисекунд осознав весь комизм ситуации и немедленно обосравшись, тут же прекращает лохматить бабушку и возвращает переменную i к своему родному значению 0. Типа ничего не было.

Рассуждать о том, что делает утилита regsvr, давайте будем после того, как будут исправлены ошибки с обработкой кода ех4 программ.

Тут, как говорится, с дуру можно и хрен сломать. Другими словами, если вы не можете писать нормальные работоспособные программы на MQL - это ваша проблема, не MQL, вот и всё. На С то же можно написать глюкавую dll, но это ведь ни как не отменяет, что С отличный язык. Так и тут, плохому танцору, т.е. вам, мешают боллс. Я понимаю ваше желание обвинить MT или MS в своих ошибках. Если это не пройдет с возрастом - то вам уже ничего не поможет.

 
HideYourRichess >>:

Тут, как говорится, с дуру можно и хрен сломать. Другими словами, если вы не можете писать нормальные работоспособные программы на MQL - это ваша проблема, не MQL, вот и всё. На С то же можно написать глюкавую dll, но это ведь ни как не отменяет, что С отличный язык. Так и тут, плохому танцору, т.е. вам, мешают боллс. Я понимаю ваше желание обвинить MT или MS в своих ошибках. Если это не пройдет с возрастом - то вам уже ничего не поможет.

Судя по вашему аватару в вашем возрасте и ломать уже нечего, и мешать нечему.

Вы мои длл видели? А какого ж рожна их плохими словами называть? Глюков я никогда не писал и не пишу - у меня на это времени нет. Глюк в данном случае написан метаквотами (к МС я кстати претензий не предъявлял). Если вы в жизни в длл ничего сложнее 2+2 не вписывали, это не значит что другие этого не делают. 2+2 глючить не будет

 
jartmailru >>:

Смешной человек.

Все решается тестированием.


Я протестировал, - у меня всё отлично работает.


jartmailru >>:

Ну вот возьми ты dll, дерни ее из советника- если удастся удалить

при запущенном MT- ну всё, герой ты, поздравляю!

А не удастся- так зачем ты тут это пишешь? Для кого?

Чтобы Закачики видели, какое отношение их ждет при работе с твоими изделиями?

Или чтобы все точно знали, к кому не стоит обращаться за советом?


Что значит "удастся удалить"? У меня длл в советнике ведут себя прилично. Я наверное что то неправильное совсем делаю.

 
HideYourRichess >>:

это ваша проблема, не MQL

Если интерпретатор не глючный - команды в коде он пропускать не будет, хоть усрись тут!

 
HideYourRichess >>:

Что значит "удастся удалить"? У меня длл в советнике ведут себя прилично. Я наверное что то неправильное совсем делаю.

Имеется в виду, что нужно в советнике указать конкретную dll. 

Потом выполнить запуск советника и не выходить из метатрейдера.

Далее- самый важный юзкейс- нужно сделать вид, что мы заменяем dll на новую.

Если при запущенном метатрейдере это не удастся (а я проверяю удалением файла)-

значит, система считает, что dll находится в использовании-

вуаля. Советник работу завершил, а Dll не выгружена.

Теперь, чтобы заменить Dll, нужно перезапускать все приложение.

 
AlexEro >>:

я болею

H1N1;)

превифку грят уже зделоли

 
alsu >>:

Судя по вашему аватару в вашем возрасте и ломать уже нечего, и мешать нечему.

Вы мои длл видели? А какого ж рожна их плохими словами называть? Глюков я никогда не писал и не пишу - у меня на это времени нет. Глюк в данном случае написан метаквотами (к МС я кстати претензий не предъявлял). Если вы в жизни в длл ничего сложнее 2+2 не вписывали, это не значит что другие этого не делают. 2+2 глючить не будет


Оооо, мюсье опустился до попыток надсмехаться над аватаром. Следующая ступень - попытки коверкать ник.


Вы вообще о чем в своём предыдущем спиче рассказывали? о каких таких ужасах поведали изумленной публике? Глядя на такое - я искренне недоумеваю. Что бы такое получить - нужно очень постараться. Отсюда и плохие слова в адрес ваших dll. Но если эти описанные вами ужасы не относятся к dll - то какого вы о них рассказываете?


Кстати, что значит 2+2? это что, показатель сложности? Попробуйте реализовать самостоятельно что то типа 2+2 как в экселе - удивитесь как это не просто.

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