Fehler, Irrtümer, Fragen - Seite 1355

 
Ilyas:

Wenn in naher Zukunft eine entsprechende Konvertierungsanweisung in einer Klasse überladen wird, wird sie aufgerufen.

Mmmm, lecker) sehr gute Nachrichten
 
Ich habe ehrlich gesagt nichts Falsches an dieser Umwandlung gesehen, da sie eindeutig ist. Warum sollte es hier einen Fehler geben? Wenn jemand einen numerischen Wert für einen Deskriptor haben möchte, ist das kein Fehler.
 
Ilyas:
Es macht jedoch keinen Sinn, einen Deskriptor in eine Zahl umzuwandeln oder umgekehrt, und dies ist höchstwahrscheinlich ein Fehler im Code.
Ich habe Codefragmente, in denen Zeiger explizit in Zahlen umgewandelt werden (für die Verbindung mit externen Schreib-/Lesesystemen sowie für die Fehleranalyse und Fehlersuche); wenn dies verboten ist, wird die Flexibilität eingeschränkt, und wir müssen alles neu machen.
 
Ilyas:
Natürlich haben Sie Recht, wenn es darum geht, "wie es im Gedächtnis gespeichert wird".
Aber es macht keinen Sinn, den Deskriptor in eine Zahl umzuwandeln oder umgekehrt, und es ist höchstwahrscheinlich ein Fehler im Code.
Wenn in naher Zukunft ein geeigneter Konvertierungsoperator in einer Klasse überladen wird, wird er aufgerufen werden.
Hier kann es eine Warnung geben, aber keinen Fehler.
 
Ilyas:
Was die Art der Speicherung angeht, haben Sie natürlich Recht.
Aber es macht keinen Sinn, den Deskriptor auf eine Zahl zu reduzieren oder umgekehrt, und es ist höchstwahrscheinlich ein Fehler im Code.
Wenn in naher Zukunft ein entsprechender Konvertierungsoperator in der Klasse überladen wird, wird er aufgerufen.

Natürlich war es mein Unachtsamkeitsfehler, ich habe schon einmal darüber geschrieben. Ich habe 95% der Fehler überhaupt, nicht Systemfehler, sondern aufgrund von Unaufmerksamkeit )) Übrigens sehe ich auch keinen Sinn darin, einen Deskriptor in eine Zahl zu verwandeln. Interessanter wird es bei Zeigern, bei denen es Zeigerarithmetik gibt, z. B. kann man double in Bytes zerlegen oder etwas anderes machen, das nicht trivial ist. Und ein Deskriptor ist nur ein interner Bezeichner, der vom MT4-Laufzeitsystem vergeben wird, Sie können damit nichts anfangen.

So ist dieser Fehler aufgetreten, ohne dass man nachts Code schreiben muss ))

// order - это дескриптор экземпляра класса, создается вот так после открытия ордера, потом заносится в CList открытых ордеров.
// COrder* order = new COrder(ticket, symbol, cmd, volume, price, timeOpen, magic, stoploss, takeprofit, comment, expiration);

// так было неправильно, просто я перепутал order с тикетом, забыл, что это же экземпляр класса, уставший был ))
logBuf[logBufCount++] = double(order);

// так правильно
logBuf[logBufCount++] = (double)order.Ticket
 
A100:
Ein Deskriptor ist immer noch eine konkrete Zahl. Nur weil er nicht auf einen bestimmten Speicherbereich verweist, verliert er nicht seine Zahleneigenschaften.

Dann ist die Zeichenkette auch eine Menge von bestimmten Zahlen. Und ein Bild ist auch eine Zahl und ein elektrischer Impuls auf einem Chip...

Im Allgemeinen studieren Sie Elektrotechnik, Kollege.

 
Alexey Navoykov:
Um ehrlich zu sein, habe ich nichts Falsches an diesem Zitat gesehen, da es eindeutig ist. Warum sollte es hier einen Fehler geben? ...

Denn die Typkontrolle wird verletzt, und die verwaltete Umgebung, d. h. die virtuelle MQL-Maschine, sollte solche Dinge verhindern:

MQL != C++

 
Ilyas:
Natürlich haben Sie Recht, wenn es darum geht, "wie es im Gedächtnis gespeichert wird".
Aber es macht keinen Sinn, den Deskriptor in eine Zahl umzuwandeln oder umgekehrt, und es ist höchstwahrscheinlich ein Fehler im Code.
In naher Zukunft wird der entsprechende Konvertierungsoperator aufgerufen werden, wenn er in einer Klasse überladen ist.
Sehr cool und vor allem ideologisch korrekt. Zwei Hände sind dafür!
 
Alexey Volchanskiy:

Übrigens sehe ich auch keinen Sinn darin, den Deskriptor auf irgendeine Zahl zu reduzieren...

Es gibt einen solchen Punkt. Dies ist eine sehr nützliche Eigenschaft für bestimmte Datencontainer, wie z. B. Wörterbücher, bei denen der Deskriptor, der per Definition eindeutig ist, der Schlüssel zu einer Klasse sein kann. In diesem Fall ist es nicht notwendig, den Hash-Wert zu berechnen, und vor allem können Sie die Eindeutigkeit von Objekten nach Verweis und nach Wert (was eigentlich unterschiedliche Konzepte sind) unterscheiden. Darüber hinaus können auch Klassen, die nicht durch Vererbung miteinander verbunden sind, in die Sammlung aufgenommen werden.
 
Alexey Volchanskiy:

Und der Deskriptor ist nur ein interner Bezeichner, der vom MT4-Laufzeitsystem vergeben wird, Sie können damit nichts anfangen.

Andere schon. Eröffnen Sie sich neue Horizonte.