Diskussion zum Artikel "Wir schreiben eine Scalping-Markttiefe aufgrund der graphischen Bibliothek CGraphic" - Seite 3
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
Bedeutet das, was ich in meiner Frage geschrieben habe, nichts?
Ihr Beispiel
Dieser Code ist vom Autor des Themas in der Beschreibung der Klasse https://www.mql5.com/de/articles/3336 veröffentlicht .
Also sollte diese Frage zumindest nicht an mich gerichtet sein...
Diese Worte bedeuten für mich nichts, außer einer Sache - Sie haben den Code des Beispiels nicht studiert.
Sie geben ein Beispiel für die Löschung durch
m_book_market.SetMarketBookSymbol(Symbol())Wenn wir diese Methode öffnen, werden wir dort ein Abonnement des übergebenen Tickers sehen.
aber nicht die Löschung des Abonnements )) Die Löschung des Abonnements erfolgt über eine Funktion:
Muss Copypasta sein. Das kommt vor. Der Autor hat diesen Code wahrscheinlich teilweise im Browser geschrieben.
Anstelle von
CMarketBook MarketBook.mqh
schreiben
CMarketBook MarketBook;
es war eine Fangfrage für deinen Namensvetter )) er liest nicht gerne Code, sondern wartet auf eine fertige Antwort ))
es war eine Fangfrage für meinen Namensvetter )) er liest nicht gerne Code, sondern wartet auf eine fertige Antwort ))
Das ist genau das, was ich immer mache, und anfangs habe ich das Entfernen des Glases so gemacht, wie es sein sollte, wie in deinem Beispiel, das eigentlich erforderlich ist, wenn man mit dem Glas aus der Hilfe arbeitet.
Aber wenn ich diese Methode verwende,
bekomme ich diese Fehlermeldung
P|S hat herausgefunden, was das Problem ist, es stellt sich heraus, dass wenn diese Methode im Klassenkonstruktor verwendet wird, es nicht notwendig ist, sie in OnDeinit zu verwenden.
Ich ziehe meine Frage zurück, Sie können mir ein Bonbon geben.
Wenn Sie keinen Destruktor in einer Klasse verwenden
Dieses Konstrukt funktioniert normal
Aber vielleicht weiß ich einfach nicht, wie man den Destruktor benutzt, oder vielleicht ist er auf eine krumme Art und Weise implementiert und funktioniert deshalb nicht so, wie er sollte.
Die Subskriptionsfunktion ist eine Broadcast-Funktion, die garantiert alle Subskriptionen in OnDeinit löscht. Wenn Sie zu viele Objekte in Ihrem Code haben und es Verzögerungen bei deren Löschung gibt, kann es sein, dass nicht genug Zeit für die OnDeinit-Verarbeitung zur Verfügung steht, was bedeutet, dass einige Objekte nicht gelöscht werden.
In diesem Fall können Sie entweder nach einem Problem im Code suchen, was korrekter ist, weil es offensichtlich ein Problem gibt und es Ihnen eines Tages in den Fuß schießen wird, oder Sie löschen sie einfach in OnDeinit und vergessen es.
ps.
Das mache ich auch immer so.
Du hast offensichtlich das Beispiel nicht analysiert, oder du hast von Anfang an einen krummen Code reingeschoben, wie, nimm es auseinander, und ich werde lachen ))
Mit einem solchen Objekt CMarketBook MarketBook.mqh würde der Compiler den Code kompilieren? Nun, du hast ein Objekt MarketBook.mqh erstellt, der Compiler hat dieses Sakrileg übersehen, aber du arbeitest mit einem Objekt MarketBook, du hättest einen Fehler in der Phase OnInit, weil du kein solches Objekt hast.Ich bin sofort darauf aufmerksam geworden, weil das Beispiel offensichtlich nicht funktioniert, also habe ich Ihnen eine Frage gestellt, aber Sie haben pflichtbewusst alles auf den Klassenentwickler und sein Beispiel geschoben....
Entweder Sie liefern ein funktionierendes Code-Beispiel, in dem dieser Fehler reproduziert wird, oder Sie erklären alles auf einmal ohne unnötigen Code, wie Sie es jetzt getan haben, dann sparen Sie auch Ihre Zeit.
Die Subskriptionsfunktion ist eine Broadcast-Funktion, die garantiert alle Subskriptionen in OnDeinit löscht. Wenn Sie zu viele Objekte in Ihrem Code haben und es Verzögerungen bei deren Löschung gibt, kann es sein, dass nicht genügend Zeit für die OnDeinit-Verarbeitung zur Verfügung steht, was bedeutet, dass einige Objekte nicht gelöscht werden.
In diesem Fall können Sie entweder nach einem Problem im Code suchen, was korrekter ist, da es offensichtlich ein Problem gibt und es Ihnen eines Tages in den Fuß schießen wird, oder Sie löschen sie einfach in OnDeinit und vergessen es.
ps.
du hast das Beispiel offensichtlich nicht geparst oder von Anfang an einen krummen Code eingebaut, also kannst du es selbst herausfinden, und ich werde lachen ))
Mit einem solchen Objekt CMarketBook MarketBook.mqh würde der Compiler den Code kompilieren? Nun, du hast ein Objekt MarketBook.mqh erstellt, der Compiler hat dieses Sakrileg übersehen, aber du arbeitest mit dem Objekt MarketBook, du hättest einen Fehler in der Phase OnInit, weil du ein solches Objekt nicht erstellt hast, ich habe es dir sofort gegeben.Ich habe sofort darauf geachtet, weil das Beispiel offensichtlich nicht funktioniert, also habe ich dir eine Frage gestellt, aber du hast pflichtbewusst alles auf den Entwickler der Klasse.... abgeladen.
Du solltest entweder ein funktionierendes Code-Beispiel liefern, wo dieser Fehler reproduziert wird, oder alles auf einmal ohne unnötigen Code erklären, wie du es jetzt getan hast, dann sparst du auch deine Zeit.
Sie sind einfach in Ihrem Repertoire, es ist mir egal, was der Autor in dem Beispiel gemacht hat, welche Druckfehler er gemacht hat, man muss schon ein kompletter Idiot sein, um nicht zu erkennen, dass es nur ein Druckfehler ist.
Die Frage war eine ganz andere.
In seinem Beispiel gibt es eine Initialisierung - Aufruf des Glases, dann gibt es seine Aktualisierung durch die Methode Refresh(), aber es gibt keine Löschung durch die Methode
MarketBookReleaseOnDeinit oder die Implementierung desselben, sondern im Destruktor der Klasse.
Deshalb habe ich dem Autor eine Frage gestellt, inwiefern es seiner Meinung nach korrekter ist, das Glas mit seiner Klasse zu löschen, weil diese Arbeit im Hauptbeispiel und in der Klasse selbst fehlt und es gut wäre, sie vorher zu implementieren, ich sage nicht, dass es etwas Schlechtes gibt usw., nur dieser Punkt fehlt, so scheint es mir.
Die Frage wurde an den Autor gestellt und ganz normal formuliert, warum soll ich seitenlang über meine Fragen und Demagogie diskutieren, was ich gelesen habe, was ich von jemandem haben will, usw. Ich selbst bin in der Lage, alles in meinem Code zu verstehen, was tatsächlich gemacht wird... Die Frage war eine ganz andere.
Oben im Code habe ich in gelber Farbe hinzugefügt, was meiner Meinung nach im angehängten Indikator vorhanden sein sollte.
Es ist mir egal, was der Autor in dem Beispiel gemacht hat, welche Druckfehler er gemacht hat, man muss schon ein kompletter Idiot sein, um nicht zu erkennen, dass es sich nur um einen Tippfehler handelt.
Die Frage war eine ganz andere.
In seinem Beispiel gibt es eine Initialisierung - einen Aufruf des Glases, dann gibt es seine Aktualisierung durch die Methode Refresh(), aber es gibt keine Löschung durch die Methode
OnDeinit oder die Implementierung desselben, sondern im Destruktor der Klasse.
Deshalb habe ich dem Autor die Frage gestellt, inwiefern es seiner Meinung nach korrekter ist, das Glas mit seiner Klasse zu löschen, weil diese Arbeit in seinem Hauptbeispiel und in der Klasse selbst fehlt und es gut wäre, sie vorher zu implementieren, ich sage nicht, dass es etwas Schlechtes gibt, etc.
Die Frage wurde an den Autor gestellt und normal formuliert, warum soll ich seitenlang über meine Fragen und Demagogie diskutieren, was ich gelesen habe, was ich von jemandem haben will, usw. Ich selbst bin in der Lage, alles in meinem Code zu verstehen, was tatsächlich gemacht wird... die Frage war eine ganz andere
Oben im Code wurde in gelber Farbe hinzugefügt, was meiner Meinung nach im angehängten Indikator vorhanden sein sollte.
es gibt hier keine Telepathen, das Beispiel, das Sie in der ursprünglichen Frage gegeben haben, reproduziert nicht das Problem, über das Sie schreiben, außerdem sind alle Mechanismen in der Klasse vorhanden, die Lösung ist Ihnen gegeben, aber ich sehe nichts als Vorwürfe, der Disput ist geschlossen.
Es gibt hier keine Telepathen, das Beispiel, das Sie in Ihrer ursprünglichen Frage gegeben haben, reproduziert nicht das Problem, über das Sie schreiben, außerdem sind alle Mechanismen in der Klasse vorhanden, die Lösung wird Ihnen gegeben, aber ich sehe nichts als Vorwürfe, der Disput ist beendet.
- Erstens gab es in meiner Frage überhaupt kein Problem.
- Zweitens habe ich niemandem irgendetwas vorgeworfen, ich habe nur eine einfache Frage an den Autor gestellt, um meine Vermutungen zu klären... und von Ihnen in jeder Nachricht einige lächerliche Anschuldigungen und Fragen über den Code, in meine Richtung, den ich gar nicht geschrieben habe, sondern aus der Artikelbeschreibung der Klasse als Beispiel genommen habe.
In der Hilfe steht:
Destruktor ist eine spezielle Funktion, die automatisch aufgerufen wird, wenn ein Objekt einer Klasse zerstört wird. Der Name des Destruktors wird wie der Klassenname mit einer Tilde (~) geschrieben. Strings, dynamische Arrays und Objekte, die eine Deinitialisierung erfordern, werden in jedem Fall deinitialisiert, unabhängig vom Vorhandensein eines Destruktors. Wenn ein Destruktor vorhanden ist, werden diese Aktionen nach dem Aufruf des Destruktors durchgeführt.
Es gibt keinen Destruktor in der Klasse, der das Preisglas durch die Methode schließen würde
MarketBookReleaseAuch im Indikator selbst in
ebenfalls nicht vorhanden ist, wurde mir eine einfache Frage gestellt - wie man die Deinitialisierung des Glases korrekt vornimmt.
Ich erwartete eine Antwort auf diese Frage,
- Erfinden Sie nichts, die Klasse selbst wird alles schließen, auch wenn kein Destruktor in ihr deklariert ist.
- Hinzufügen
Oder fügen Sie einen Destruktor in die Klasse selbst ein.
Und du wirst glücklich sein... und du hast eine Dimagogie begonnen, in der du mich beschuldigst, dass ich einige Druckfehler im Code eines anderen gemacht habe, dass er nicht kompilierbar ist, was ich auch ohne dich weiß, dass ich etwas nicht lesen kann.... auf Russisch, du hast mich als Rehe angemeldet.
Perfekt! Großartig Perfekt! Großartige Arbeit!Der neue Artikel Implementing a Scalping Market Depth Using the CGraphic Library wurde veröffentlicht:
Autor: Vasiliy Sokolov
Vielen Dank, das ist ein großartiges Tool, das sehr leicht zu modifizieren ist.