New MetaTrader 4 Platform build 1045 - page 2

Ex Ovo Omnia
3107
Ex Ovo Omnia  
Fernando Carreiro:
According to the Forum posts, the currently minimum supported build is 940:
Ok, thank you, this seems to be still valid. Actually I am satisfied with the current compatibility, after the 920 went out of sight.
Alain Verleyen
42221
Alain Verleyen  
Fernando Carreiro:
Since when does one need to write in Russian for the Service Desk?

I have always written in English and received their replies also in English!

My suggestion was to post on Russian forum, trying to get an answer from Renat (Metaquotes CEO).

Of course you can write in English for the Service Desk. 

Stanislav Korotky
36361
Stanislav Korotky  
Ovo Cz:

Besides, the wide range of supported clients prevents me from using the later features of MQL4, like the 'void' object type (really unlucky decision naming it 'void').

What is wrong with the term void?
Ex Ovo Omnia
3107
Ex Ovo Omnia  
Stanislav Korotky:
What is wrong with the term void?

The wrong about 'void' is that it already was a keyword, meaning nothing is returned from the function (method).

Now it may have an additional meaning that an object pointer is returned. 

In other words, every class inherits from a class named 'void', which I consider misleading. There are so many better words for a dummy class in English.

Blahtech Limited
98601
James Cater  
Ovo Cz:

The wrong about 'void' is that it already was a keyword, meaning nothing is returned from the function (method).

Now it may have an additional meaning that an object pointer is returned. 

In other words, every class inherits from a class named 'void', which I consider misleading. There are so many better words for a dummy class in English.

You shouldn't blame Metaquotes for this.

It's a feature of the "C" language, way before classes were invented http://www.c4learn.com/c-programming/c-void-pointers/

Ex Ovo Omnia
3107
Ex Ovo Omnia  
James Cater:

You shouldn't blame Metaquotes for this.

It's a feature of the "C" language, way before classes were invented http://www.c4learn.com/c-programming/c-void-pointers/

I know what you mean. Anyway - can you spot any resemblance between the C-style pointer to any variable, structure or method, and the MQL-style descriptor of an object? I cannot, I can see the 'void *' only a generic object type declaration in MQL.

JC
1674
JC  
Ovo Cz:

I know what you mean. Anyway - can you spot any resemblance between the C-style pointer to any variable, structure or method, and the MQL-style descriptor of an object? I cannot, I can see the 'void *' only a generic object type declaration in MQL.

I am struggling to see a sensible real-life use for void* in MQL4 but, as James Cater says, it is just a legacy of C.

After a brief experiment with uses of void*, it turns out to be possible to do some horrible C++-style things using void*:

#property strict

class Class1 {
public:
   void TestMe() {Print("Test1");}
};

class Class2 {
};

void OnStart()
{
   Class1 * x1 = new Class1();
   Class2 * x2 = new Class2();

   Test(x1);
   Test(x2); // Note the dynamic cast from Class2 to Class1 which is permitted here, inside Test()...
  
   delete x1;
   delete x2;
}

void Test(void * pClass)
{
   Class1 * pObj = dynamic_cast<Class1*>(pClass);
   pObj.TestMe();
}
Stanislav Korotky
36361
Stanislav Korotky  
JC:

I am struggling to see a sensible real-life use for void* in MQL4 but, as James Cater says, it is just a legacy of C.

After a brief experiment with uses of void*, it turns out to be possible to do some horrible C++-style things using void*:

#property strict

class Class1 {
public:
   void TestMe() {Print("Test1");}
};

class Class2 {
};

void OnStart()
{
   Class1 * x1 = new Class1();
   Class2 * x2 = new Class2();

   Test(x1);
   Test(x2); // Note the dynamic cast from Class2 to Class1 which is permitted here, inside Test()...
  
   delete x1;
   delete x2;
}

void Test(void * pClass)
{
   Class1 * pObj = dynamic_cast<Class1*>(pClass);
   pObj.TestMe();
}
This is perfectly valid, but you should check the pointer after dynamic_cast for NULL.
JC
1674
JC  
Stanislav Korotky:
This is perfectly valid, but you should check the pointer after dynamic_cast for NULL.
Yes, it's valid, like it is valid in C++, but it's horrible. Given a pointer to Class2, what the dynamic_cast in effect produces is a pointer to a new, uninitialised instance of Class1. It is hard to describe this as a "cast".
Anjani Singh
7
Anjani Singh  

Which Windows 10 build will it support? Is it Windows 10 Preview Build 15025 onwards?