how to unload the dll - page 8

 
alsu >> :

If the interpreter isn't glitchy, it won't skip commands in the code, no matter how much shit you do!

Don't use such superlatives, "glitchy". If an interpreter has a couple of glitches, it doesn't mean that it's glitchy. Have a look at at least the same VC bug report, I highly recommend for understanding what is "glitchy". The situation is an order of magnitude worse, but no one in their right mind would dare consider VC "glitchy". It's the same here.


And anyway, was the dll in question here? Is there any objection to the dll being written correctly - does it behave correctly? and the only correct way to unload the dll is the standard way recommended in the documentation?

 
alsu >> :

AlexEro,

Cycle on timeseries for(i=limit;i>=0;i--) after finishing it flew to the area of negative indexes (which was inevitably confirmed by alerts)!!!!


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

))) Did you mean it?

What a mess! I didn't know that!!!

(What a... sloppy day today)

 
jartmailru >> :

What is meant is that you have to specify a specific dll in the EA.

Then run the EA and do not exit Metatrader.

Next - the most important usecase - we have to pretend that we are replacing the dll with a new one.

If it fails when the metatrader is running (and I check by deleting the file)-then

then the system thinks the dll is in use--

voila. The Expert Advisor has completed its work and the dll has not been unloaded.

Now I have to restart the entire application to replace the dll.

Geez, if I understood your description correctly, then you are suggesting to replace the dll itself when the EA is running, to which the dll is hooked?! Have you tried stopping the EA (not with a button), then replacing the dll, and starting the EA again?

 
alsu писал(а) >>

But as soon as a terrified programmer starts excessively zealously manipulating memory or stealing processor time from the terminal for his calculations, or touches the sacred (oh my God) - terminal.exe message queue, then the evil methaquot will take its revenge.

And you think that program message queue handlers should be "like Merlin, the great and terrible" in all code fragments that are executed? Why would you even touch someone else's message queue from a dll?

I've encountered such things that make your hair stand on end.

So far it's just words. Give me an example of code. I'm not the only one interested.

In general, I have not encountered dll not loading as such (I have already written about it; I used dll both in Expert Advisors and indicators; in all cases I had to "overly zealously manipulate memory or use cpu time" directly in dll and the result was undesirable operation).

 
Svinozavr >> :

))) Is that what you meant?

What a mess! I didn't know that!!!

(What a... messed up day it is today).

I can't reproduce the code exactly, but it was something like this

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);
}

In a fast market, when several ticks are received per second, this code produced in the alerts a sequence i=0, i=-1, i=-2, i=-3 (depending on how many ticks the terminal missed until start() was executed) and then i=0 again.

Missed ticks - the hell with it, it happens. But if it happens, it does not mean that the program must jump a conditional command, which actually happens twice in the code (the for loop is essentially a branching command, too).

 
HideYourRichess >> :

Holy shit, if I understand correctly from your description, you are suggesting to replace the dll itself when the EA is running, to which the dll is hooked?! Have you tried stopping the EA (not with a button), then replacing the dll, and restarting the EA?

Of course, we are talking about trying to replace the dll after testing is complete.

But apparently your professional experience suggests that after the mistakes you've made

and incorrect attitude to forum users, it is more profitable to start picking on words.

.

And of course the great pro didn't try to run a simple test ...or did.

 
same effect, but on a larger scale (down to -100 and beyond) observed when starting the terminal and loading the indicator from the template, when the term loads the end of the missing history
 
jartmailru >> :

Of course, we are talking about trying to replace the dll after testing is complete. But apparently your professional experience suggests that it is more profitable to start picking on words after the mistakes you've made and your incorrect attitude towards forum members.

No, our experience says that one has to be careful to find out what is being talked about. And if a "forum member" is a fool - that's all right, it happens, one shouldn't even speak about it aloud. But if he is a stubborn fool in his ignorance - that's right, there is no choice of words. And no need to lie, I haven't made any mistakes. Unlike you.


Well, Dll in my Expert Advisor behaves correctly. This is the fifth time I'm telling you, and the last time. Perhaps I have a different dll, such a gray, absolutely uninteresting dll, not like yours.

 
alsu >> :

I can't reproduce the code exactly, but it was something like this

In a fast market, when several ticks are received per second, this code produced in the alerts a sequence i=0,i=-1,i=-2,i=-3 (depending on how many ticks the terminal missed until start() was executed) and then i=0 again.

Missed ticks - the hell with it, it happens. But if that happens, it does not mean that the program must jump a conditional command, which actually happens twice in the code (the for loop is also a branching command).

Clarification of loop condition i>=1 rather than 0, as you cited in my confused first post, removes suspicion - I was beginning to think you'd gone too... sick too.

Jumping conditions? Cool. Never happened. What is this magic dll? )))

Can you reproduce the result? And see the dll itself. Not that I don't believe it - I just really want to learn how to write such dlls. So that everything would click into place. I'll have something to talk about with smart people later...

 
HideYourRichess >> :

So, in my EA the Dll behaves correctly. For the fifth time I am reporting, and for the last time. I must have a different dll, such a grey absolutely uninteresting dll, not like yours.

Great! You have already reached a new level - a level of abstraction.

You probably have experience in working with people, perhaps in commerce.

.

Well. Let's apply that kind of reasoning. I am very glad that you have accepted my arguments.

For my part I only have to assure everyone that my Dlls work even more correctly.

In any case, the results were the same as those of the Metatrader tester and Neuroshell's Dll.

.

But as someone unable to perform a simple test and report back, don't answer me again.

>> Except for the public.

Reason: