Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich habe einen Fehler in CDictionary entdeckt. Wenn Sie die Reset-Methode verwenden, wird das CList-Objekt in m_data gelöscht. Nachfolgende Aufrufe anderer Methoden, die den Punkt aus dem Wörterbuch holen, erhalten einen fehlerhaften Zeiger zurück. Beispiel:
Ich würde den folgenden Fix für alle Methoden vorschlagen, die den Key-Hash verwenden, um auf ein CList-Objekt aus dem m_data-Array zuzugreifen.
Ich habe einen Fehler in CDictionary entdeckt. Wenn Sie die Reset-Methode verwenden, wird das CList-Objekt in m_data gelöscht. Nachfolgende Aufrufe anderer Methoden, die den Punkt aus dem Wörterbuch holen, erhalten einen fehlerhaften Zeiger zurück. Beispiel:
Ich würde die folgende Korrektur für alle Methoden vorschlagen, die den Schlüssel-Hash verwenden, um auf ein CList-Objekt aus dem m_data-Array zuzugreifen.
Danke Nicoli Shen. Ihre Lösung ist die "sicherere" Lösung. Allerdings kann ich das Problem nicht reproduzieren.
Eine andere Sache, die mich in diesem Zusammenhang stört: ein Objektzeiger sollte einen Nullwert akzeptieren können. m_data ist ein dynamisches Array, also sollte es Null zurückgeben, wenn ein nicht gefüllter Index aus dem Array abgerufen wird oder das gespeicherte Element gelöscht wird. Das Speichern von Daten aus m_data in CList* ohne vorherige Überprüfung des Zeigers wird auch bei anderen Methoden wie Get() und Delete() durchgeführt, so dass die obigen Testskripte ebenfalls fehlschlagen sollten, wenn dieses Problem besteht. Eine einfache Zuweisung zwischen einem Zeiger und einem anderen kann ohne Zeigerzugriffsfehler durchgeführt werden, selbst wenn das Objekt, auf das der l-Wert zeigt, bereits gelöscht ist:
Das Problem kann auf das obige Beispiel reduziert werden. Aber in diesem Fall gibt es keine Zeigerfehler. Ich bin neugierig, weil ich mich daran erinnere, dass ich das gleiche Problem in einem früheren Build hatte, das schnell gepatcht wurde.
Ich verwende derzeit MT5 Build 1932, aber lassen Sie mich wissen, wenn ich etwas übersehen habe.
Ich habe diese Fehlermeldung:
'Key' - unerwartetes Token, wahrscheinlich fehlt der Typ? Dictionary.mqh 39 23
'Key' - Funktion ist bereits definiert und hat einen anderen Typ Dictionary.mqh 39 23
siehe Deklaration von 'CDictionaryEntryBase::Key' Dictionary.mqh 20 22
Ich versuche, mit Build 3320 zurechtzukommen.
Ich habe diese Fehler:
'Key' - unerwartetes Token, wahrscheinlich fehlt der Typ? Dictionary.mqh 39 23
'Key' - Funktion ist bereits definiert und hat einen anderen Typ Dictionary.mqh 39 23
siehe Deklaration von 'CDictionaryEntryBase::Key' Dictionary.mqh 20 22
Ich versuche, mit Build 3320 zurechtzukommen.