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

 
alsu >>:

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

Вот только не надо, такие превосходные степени, "глючный". Если в интерпретаторе есть пара глюков - это не значит что он глючный. Загляните в баг-репорт хотя бы того же VC, очень рекомендую для понимая того, что есть "глючность". Ситуация на порядок хуже, но ни кто в здравом уме не решится считать VC "глючным". Так и тут.


И вообще, тут про dll речь была? Есть возражения по поводу того что dll написанное правильно - ведет себя корректно? и единственный корректный способ выгружать dll, есть стандартный способ рекомендованный в документации?

 
alsu >>:

AlexEro,

Цикл по таймсерии for(i=limit;i>=0;i--) после завершения вылетал нах в область отрицательных индексов (что непременно подтверждалось алертами)!!!


int start()
  {
   for(int i=11;i>=0;i--) continue;
   Alert(i);
   return(0);
  }

))) Вы это имели ввиду?

Какой ужОс! А я и не знал!!!

(Что за день сегодня такой... корявый)

 
jartmailru >>:

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

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

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

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

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

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

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

Афигеть, если я правильно понял из вашего описания, то вы предлагаете при запущенном советнике, к которому подцеплен dll, заменить сам dll?! А вы не пробовали остановить советник (не кнопочкой), потом заменить dll, и снова запустить советник?

 
alsu писал(а) >>

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

А вы считаете, что обработчики очереди сообщений программы должны "как Мерлин, великий и ужасный" быть сразу во всех местах кода, которые исполняются? Зачем вам вообще из dll трогать чужую очередь сообщений?

Мне встречались такие вещи, от которых ваще волосы дыбом вставали.

Пока что это только слова. Приведите пример кода. Интересно будет не только мне.

А вообще невыгрузка dll как таковая мною замечена не была (я уже про это писал; dll использовал как в советниках, так и в индикаторах; во всех случаях приходилось "чересчур рьяно манипулировать памятью или хавать у терминала процессорное время" прямо в dll и результатом была беспроблемная работа).

 
HideYourRichess >>:

Афигеть, если я правильно понял из вашего описания, то вы предлагаете при запущенном советнике, к которому подцеплен dll, заменить сам dll?! А вы не пробовали остановить советник (не кнопочкой), потом заменить dll, и снова запустить советник?

Разумеется, речь идет про попытку заменить dll после завершения тестирования.

Но, видимо, Ваш профессиональный опыт говорит о том, что после допущенных вами  ошибок

и некорректного отношения к форумчанам выгоднее начать придираться к словам.

.

И, разумеется, великий профи не попытался выполнить простенький тестик ...или выполнил.

 
Svinozavr >>:

))) Вы это имели ввиду?

Какой ужОс! А я и не знал!!!

(Что за день сегодня такой... корявый)

Точно код не воспроизведу, но было что-то вроде

int start()
{

...

int i;
for (i=100;i>=1;i--) //отмечу, что здесь было именно 1, а не 0
{
   //че-то делаем
   CallToDLLFunction();//здесь вызывалась какая-то простенькая функция, время работы порядка 1-3 миллисекунд
}

if(i<0) return(0); //эти две строчки вставил уже когда заподозрил неладное
Alert("i=",i);

return(0);
}

На быстром рынке, когда приходит по нескольку тиков за секунду, такой код выдавал в алерте последовательность i=0,i=-1,i=-2,i=-3 (по ходу в зависимости от того, сколько тиков терминал профукал пока выполнялся старт()) и потом снова i=0.

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

 
тот же эффект, но в бОльших масштабах (до -100 и дальше) наблюдался при старте терминала и загрузке индикатора из шаблона, когда терм подгружает конец недостающей истории
 
jartmailru >>:

Разумеется, речь идет про попытку заменить dll после завершения тестирования. Но, видимо, Ваш профессиональный опыт говорит о том, что после допущенных вами ошибок и некорректного отношения к форумчанам выгоднее начать придираться к словам.

Нет, наш опыт говорит что нужно внимательно выяснить о чем идет речь. И если "форумчанин" дурак - то это ничего, бывает, об этом даже и говорить не следует в слух. Но если это упертый в своём невежестве дурак - вот тут да, выбирать слова не приходится. И не нужно врать, ни каких ошибок я не допускал. В отличии от вас.


Так вот, у меня в советнике Dll ведет себя корректно. В пятый раз сообщаю, и в последний. Наверное у меня другая dll, такая серая абсолютно неинтересная dll, не как у вас.

 
alsu >>:

Точно код не воспроизведу, но было что-то вроде

На быстром рынке, когда приходит по нескольку тиков за секунду, такой код выдавал в алерте последовательность i=0,i=-1,i=-2,i=-3 (по ходу в зависимости от того, сколько тиков терминал профукал пока выполнялся старт()) и потом снова i=0.

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

Уточнение по условию цикла i>=1, а не 0, как вы привели в вызвавшем мое замешательство первом посте, снимает подозрения - я уж было подумал, что и вы тоже того... заболели.

Перескок условия? Круто. Ни разу не было. Что ж за такая волшебная dll? )))

А можно воспроизвести результат? И саму dll посмотреть. Я не то, чтобы не верю, - просто очень хочется научиться писать такие dll-ки. Чтоб все переклинивало. Будет о чем с умными людьми потом поговорить...

 
HideYourRichess >>:

Так вот, у меня в советнике Dll ведет себя корректно. В пятый раз сообщаю, и в последний. Наверное у меня другая dll, такая серая абсолютно неинтересная dll, не как у вас.

Замечательно! вы уже вышли на новый уровень- уровень абстракции.

Вероятно, имеется опыт в работе с людьми, возможно, торговле.

.

Ну что ж. Применим подобную аргументацию. Я очень рад, что вы приняли мои аргументы.

Со своей стороны мне только остается всех уверить, что мои Dll работают еще более корректно.

Во всяком случае, результаты совпадали с результатом тестера метатрейдера и Dll от Neuroshell.

.

Но как человек, неспособный выполнить простой тест и отчитаться, мне больше не отвечайте.

Разве что для публики.

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