Fragen von einem "Dummy" - Seite 263

 
Contender:

Versuchen Sie StringConcatenate() zu verwenden, um die Strings zusammenzufügen

Ersetzt durch

StringConcatenate(nTL,"nTL_",IntegerToString(MathRand()));
hat nicht geholfen.
 
Silent:
Ich werde mir noch eine Woche lang den Kopf zerbrechen. Können Sie mir weitere Einzelheiten nennen? (kann hart sein :))

Gibt es eine andere Möglichkeit für ein paar hundert Objekte mit eindeutigen Namen?

(Eine Gruppe von Objekten muss den gleichen Teil der Zeichenkette im Namen haben, um die Gruppe zu entfernen).

Zähler
 
TheXpert:

Nun, logischerweise, wenn die Funktion überhaupt den letzten Fehler setzt, dann sollte bei erfolgreicher Beendigung der Funktion ein Fehlerwert von Null oder der in der Dokumentation beschriebene Wert vorhanden sein. Es gibt keinen anderen Weg.

D.h. wenn der Aufruf erfolgreich war und der Fehler nicht Null ist, sollte dieser Fall in der Dokumentation beschrieben werden.

Das dachte ich auch, bis ich vom Gegenteil überzeugt wurde. Ich habe eine Anfrage an den SD geschrieben und eine Antwort erhalten, wie ich es oben getan habe :)
 
220Volt:

Sind Sie besorgt, weil Get Last Errors etwas anderes als Null ausgibt? Wenn dies der Fall ist, sollten Sie nur nach einem Fehler fragen, wenn die Funktion einen Fehler meldet. Und man sollte nicht nach einem Fehler am Ende des Plots fragen, da man sonst einen unsinnigen Wert erhält. So ist es in MT4, vielleicht ist es hier anders.

Pseudocode:

Der Fehler sollte durch ResetLastError() gelöscht werden, aber wenn eine Zuweisung im Gange ist, ist es gleichwertig.
 
Silent:

Meine Empfehlung: Führen Sie Get LastError erneut nach dem oben beschriebenen Prinzip durch. Nur dann erhalten Sie den Fehler, der auftritt, vielleicht erhalten Sie auch etwas anderes.

 
220Volt:
Das dachte ich auch, bis ich vom Gegenteil überzeugt wurde. Ich habe eine Anfrage an den SD geschrieben und die gleiche Antwort erhalten wie oben :)
Brayed.
 

Reset wird vor dem Anruf zurückgesetzt.

Dies ist die Ursache des Fehlers

void  CreateTL(string name,datetime time1,double price1,datetime time2,double price2,bool ray_left,bool ray_right,color color_TL)
  {
//------------ nTL,nTLh,nTLl,nTLe
   nTL="nTL_"+IntegerToString(MathRand());
   nTLh="nTLh_"+IntegerToString(MathRand());
   nTLl="nTLl_"+IntegerToString(MathRand());
   nTLe="nTLe_"+IntegerToString(MathRand());
//------------
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
  };

Diese Variante enthält keinen Fehler

void  CreateTL(string name,datetime time1,double price1,datetime time2,double price2,bool ray_left,bool ray_right,color color_TL)
  {
//------------ nTL,nTLh,nTLl,nTLe
   //nTL="nTL_"+IntegerToString(MathRand());
   //nTLh="nTLh_"+IntegerToString(MathRand());
   //nTLl="nTLl_"+IntegerToString(MathRand());
   //nTLe="nTLe_"+IntegerToString(MathRand());
//------------
   ObjectCreate(0,nTL="nTL_"+IntegerToString(MathRand());,OBJ_TREND,0,time1,price1,time2,price2);
  };
 
zfs:
Zähler
Was macht das für einen Unterschied? Gleiche Zahlen in einer Zeichenkette.
 
Silent:
Was macht das für einen Unterschied? Es sind dieselben Zahlen auf der Linie.
Es gibt keine Garantie, dass die Zahlen nicht übereinstimmen. Potenzial für Fehler.
 
zfs:
Es gibt keine Garantie, dass die Zahlen nicht übereinstimmen. Möglicher Fehler.

Erstens gibt es keine Chance (der Code von Urain ist noch nie gescheitert)

x=0;  MathSrand(x);
   for(i=0;i<MathRand();i++)MathRand();
   MathSrand((int)TimeLocal()*MathRand());

Zweitens habe ich einen Fehler (und kein Objekt erstellt) genau auf den ersten Aufruf.

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5