Gibt es einen Fehler in mt5 ObjectDelete? - Seite 2

 

Dies könnte eher ein semantisches Problem als ein Fehler sein.

Der Zweck von ObjectDelete ist es, "das Objekt mit dem angegebenen Namen zu entfernen".

Befindet sich am Ende der Ausführung der Funktion noch ein Objekt mit dem Namen "Nicht existierendes Objekt" im Diagramm? Nein... ist dies also ein Erfolg?

Anders gefragt: Hat ObjectDelete ein Objekt mit dem Namen "Non-existing Object" entfernt? Nein... ist das also ein Misserfolg?

Messen Sie den Erfolg am Ergebnis oder an der durchgeführten Aktion?

Vielleicht wäre ein False zu erwarten, wenn das genannte Objekt nach Ausführung der Funktion im Diagramm verbleibt. Ansonsten war es ein Erfolg.

 
Farzin Sadeghi:
Ja, ich werde es melden. Ich habe auf Ihre Bestätigung gewartet, danke.

Ich habe gerade versucht, das Problem über den Service Desk zu melden, aber die Meldung wird nicht akzeptiert: "Fehler beim Speichern von Daten".

Ich habe es auch von einem anderen Standort, PC und Browser aus versucht (mit meinem VPS), und es ist dasselbe passiert.

Konnten Sie das Problem bei Ihnen melden?

 
honest_knave:

Dies könnte eher ein semantisches Problem als ein Fehler sein.

Der Zweck von ObjectDelete ist es, "das Objekt mit dem angegebenen Namen zu entfernen".

Befindet sich am Ende der Ausführung der Funktion noch ein Objekt mit dem Namen "Nicht existierendes Objekt" im Diagramm? Nein... ist dies also ein Erfolg?

Anders gefragt: Hat ObjectDelete ein Objekt mit dem Namen "Non-existing Object" entfernt? Nein... ist das also ein Misserfolg?

Messen Sie den Erfolg am Ergebnis oder an der durchgeführten Aktion?

Vielleicht wäre ein False zu erwarten, wenn das genannte Objekt nach Ausführung der Funktion im Diagramm verbleibt. Ansonsten war es ein Erfolg.

Wenn das der Fall ist, dann ist der Unterschied in der Funktionalität zwischen MQL4 und MQL5 nicht in der Dokumentation beschrieben oder erklärt!
 
Fernando Carreiro:
Wenn das der Fall ist, dann ist der Funktionsunterschied zwischen MQL4 und MQL5 nicht in der Dokumentation beschrieben oder erklärt!

Einverstanden. Ich bin nur neugierig, was "sie" für richtig halten werden :-)

Ich persönlich denke, dass es besser ist, true zurückzugeben. Andernfalls muss man zusätzlichen Code hinzufügen, um zu prüfen, ob das Objekt existiert, oder man muss 4202-Fehler in Kauf nehmen.

 
honest_knave:

Einverstanden. Ich bin nur neugierig, was "sie" für richtig halten werden :-)

Ich persönlich denke, dass es besser ist, true zurückzugeben. Andernfalls muss man zusätzlichen Code hinzufügen, um die Existenz des Objekts zu prüfen, oder man muss 4202-Fehler in Kauf nehmen.

Meiner Meinung nach muss man in beiden Fällen die Existenz des Objekts vor dem Löschen prüfen, unabhängig davon, welche Version "richtig" ist.

EDIT: Ich hoffe jedoch, dass sie es so "reparieren", dass es auf die gleiche Weise wie MQL4 funktioniert. Andernfalls wird es noch einen weiteren Unterschied in der Funktionalität geben, bei dem wir eine bedingte Kompilierung in den Code einbauen müssen, der für beide Versionen kompiliert werden soll.

 
Fernando Carreiro:
Meiner Meinung nach muss in beiden Fällen vor dem Löschen geprüft werden, ob das Objekt vorhanden ist, unabhängig davon, welche Version "richtig" ist.

Interessant! Warum sollten Sie prüfen, ob es existiert, wenn Sie es loswerden wollen?

Die Zeit, die benötigt wird, um zu prüfen, ob ein nicht existierendes Objekt existiert, ist weitgehend vergleichbar mit dem Versuch, ein nicht existierendes Objekt auf MT4 zu löschen (und eine flüchtige Inspektion auf MT5 zeigt, dass es wesentlich langsamer ist), so dass ich keinen greifbaren Leistungsvorteil durch die Ausführung der Prüfung erkennen kann. Aber es werden mehr Zeilen in Ihrem Code hinzugefügt.

 
Fernando Carreiro:

EDIT: Ich hoffe jedoch, dass sie es so "reparieren", dass es auf die gleiche Weise wie MQL4 funktioniert. Andernfalls wird es noch einen weiteren Unterschied in der Funktionalität geben, bei dem wir eine bedingte Kompilierung in den Code einfügen müssen, der für beide Versionen kompiliert werden soll.

Vielleicht ist das alles Teil ihres Plans, uns durch Frustration zu MT5 zu zwingen!
 
honest_knave:

Interessant! Warum sollten Sie prüfen, ob es existiert, wenn Sie es loswerden wollen?

Die Zeit, die benötigt wird, um zu prüfen, ob ein nicht existierendes Objekt existiert, ist weitgehend vergleichbar mit dem Versuch, ein nicht existierendes Objekt auf MT4 zu löschen (und eine flüchtige Inspektion auf MT5 zeigt, dass es wesentlich langsamer ist), so dass ich keinen greifbaren Leistungsvorteil durch die Ausführung der Prüfung erkennen kann. Allerdings werden dadurch mehr Zeilen in Ihrem Code hinzugefügt.

Wenn Sie erkennen wollen, ob der Benutzer den Eintrag versehentlich gelöscht hat und er neu erstellt werden muss. Ich meinte dies als allgemeine "Haushaltsführung" und nicht für eine einmalige Löschfunktion.

Aber ja, ich stimme zu, für eine "OnDeinit()" -Funktionalität ist es nicht notwendig, sie zuerst zu testen.

 
Fernando Carreiro:

Wenn Sie erkennen wollen, ob der Benutzer sie versehentlich gelöscht hat und sie neu erstellt werden muss. Ich meinte dies als allgemeine "Haushaltsführung" und nicht für eine einmalige Löschfunktion.

Aber ja, ich stimme zu, für eine "OnDeinit()" Funktionalität, gibt es keine Notwendigkeit, es zuerst zu testen.

Ah, ich verstehe.

Als Nebenbemerkung:

#property strict

void OnStart()
  {
   string name = "MysteryObject";
   ulong begin;

   begin = GetMicrosecondCount();
   for(int i=0; i<1000; i++) int result = ObjectFind(0,name);
   printf("ObjectFind took %i μs", GetMicrosecondCount()-begin);

   begin = GetMicrosecondCount();
   for(int i=0; i<1000; i++) bool result = ObjectDelete(0,name);
   printf("ObjectDelete took %i μs", GetMicrosecondCount()-begin);
  }

Es läuft auf MT4 Es ist nicht viel drin.

Betrieb auf MT5 Es ist über 50 Mal langsamer.

Hat jemand einen Einblick in die Gründe?

 
honest_knave: Ah, ich verstehe.

Als Randbemerkung:

Betrieb auf MT4 Es ist nicht viel drin.

Betrieb auf MT5 Es ist über 50 Mal langsamer.

Hat jemand einen Einblick in die Gründe?

Welches Build haben Sie verwendet? Da es in der letzten Build einen möglichen Fehler mit der Funktion"ObjectDelete()" zu geben scheint, könnte es sein, dass es auch Probleme mit der Funktion "ObjectFind()" gibt!