Build 600 breaks existing code; what needs to be changed?

 

I have a client saying that code working in Build 509 is now causing problems on Build 600 (MT4 freezes). I've heard of other people experiencing problems. How many indicators and EAs might this affect, dozens, thousands?

What did MQL do to MT4 that causes this problem? If Build 600 breaks existing code, MQL should tell us about it and what needs to be changed in existing code.

 
rwbta:

I have a client saying that code working in Build 509 is now causing problems on Build 600 (MT4 freezes). I've heard of other people experiencing problems. How many indicators and EAs might this affect, dozens, thousands?

What did MQL do to MT4 that causes this problem? If Build 600 breaks existing code, MQL should tell us about it and what needs to be changed in existing code.


I am having the same problem. I have a client that is having problems with existing EAs freezing, etc. They worked perfectly under build 509 and earlier. So I do think this is a legitimate issue.
 

Why don't you read the instructions first?


First post, filed under "What's New in MQL4": https://forum.mql4.com/60555

 

Here are some observations made by a newbie, it's not extensive by any means.

Build 600 doesn't need return(0);

You can't use double instead of int for specifying the parameters for technical analysis indicators.

Variables in the below format didn't always work, e.g.

double count, total;

they didn't default to 0, I had to specify e.g. double count = 0;

Plus many more, probably...

The debugger that comes with the new build helps with identifying errors.

 
2cent:


Why don't you read the instructions first?


First post, filed under "What's New in MQL4": https://forum.mql4.com/60555



Before I posted this question, I had already read a lot of stuff of that page; I still haven't gotten to the part that says "We broke this; you have to do this other thing to fix it." There's a lot of stuff about a lot of stuff on that page. If you or anyone else has any idea where on that page (if at all) this particular set of issues are addressed, that would be helpful. At the moment, I'm not really that interested in changes to menus or file locations. I need specific information on what was code broken not general info on everything that has changed.

 
jbrunet:

I am having the same problem. I have a client that is having problems with existing EAs freezing, etc. They worked perfectly under build 509 and earlier. So I do think this is a legitimate issue.


I agree with you jbrunet; I'm in the middle of several projects that suddenly need to be reworked to fix the problems introduced by Build 600. It would have been nice if they gave us heads up in advance.

Right now, we need specific advice on what to change in code to fix these MQL produced issues.

 
rwbta:

I need specific information on what was code broken not general info on everything that has changed.


I have already stated where to find this specific information. Search for "What's New in MQL4" in that first post. Anyway, it is only minor things, almost nothing.

To sum it up:

- type datetime has been extended to 64 vs 32 bits;

- string representation has changed from ansi to unicode, meaning use unicode system functions if you call such;

- keyword extern has changed meaning, now use keyword input;

- data paths have changed;

- history file format has changed;

- RateInfo has changed to MqlRates structure;

- operator precedence has changed.


I think these are the most important breaking points. You do not need to use OOP if you do not want to. However, if you cannot invest a few minutes to read the full post, you cannot be helped.

 
2cent:

I have already stated where to find this specific information. Search for "What's New in MQL4" in that first post. Anyway, it is only minor things, almost nothing.

To sum it up:

- type datetime has been extended to 64 vs 32 bits;

- string representation has changed from ansi to unicode, meaning use unicode system functions;

- keyword extern has changed meaning, now use keyword input;

- data paths have changed;

- history file format has changed;

- RateInfo has changed to MqlRates structure.

I think these are the most important breaking points. You do not need to use OOP if you do not want to. But, if you cannot invest a few minutes to read the full post, you cannot be halped.




To anyone who is interested, search the page 2cent refers to for: The table of differences between compilers ; you will find the key issues there. The other information above that is important, but perhaps not as important as clients contacting you because MT4 build 600 freezes when using your code (even though it worked just fine before that).

2cent thank you for taking time to note changes that you think might break existing code. IMHO, it takes more than a few minutes to analyze that page thoroughly for the nuances of how these changes affect existing code. As I stated before, I was not interested in "everything" that's new just what is causing build 600 to freeze. I have clients in a panic because build 600 is freezing. Btw, even ex4 files are freezing MT4 build 600. Nobody wants that happening in the middle of a trade. What I am wondering now is how much old code will have to be scrapped because of these changes? Let's leave that for a separate thread in the future after the dust settles.

Reason: