Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1416

 
ANDREY:

Danke für die Klarstellung.

Übrigens habe ich die gelben Pluszeichen entfernt, und der Compiler gab einen Fehler aus. Sie spielen also eine gewisse Rolle in dieser ganzen Konstruktion. Aber was.... ich immer noch nicht verstehe. Wozu werden sie benötigt, wenn die Addition von Zeichenfolgen nur durch die Verwendung von blauen Pluszeichen erfolgt. Nach Ihren Erklärungen zu urteilen, gibt es nichts anderes in dieser Konstruktion ....., wenn ich mich nicht irre.

Und über string(i)... Über die Typenumwandlung .... ist für mich mehr oder weniger klar. Unklar ist, dass..... string der Name eines Variablentyps ist. i ist eine Zählervariable, die den Index eines Array-Elements angibt. Und warum stehti in Klammern ()? Ich habe bisher gedacht, dass Klammern ein Funktionsmerkmal sind. Zum Beispiel: Print( ). Und in einigen Funktionen werden verschiedene Daten in Klammern gesetzt. Aber was bedeuten Klammern oder welche Funktion haben Klammern in Bezug auf i und dieses ganze Konstrukt - string(i)? Auf den ersten Blick sieht es so aus, als hätte die i-Variable vorher den Typ int (Ganzzahl) gehabt , und dann haben Sie den Typ der i-Variable von int in string (Zeichenkette) geändert. Aber runde Klammern, die i enthalten, lassen mich nicht so denken.

Vielen Dank für die Erklärung.

Es handelt sich nicht um eine Typumwandlung, sondern um eine Umwandlung eines Wertes in der Variablen i

Man kann es oft so sehen

eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", ";
 
Alekseu Fedotov:

Es handelt sich nicht um eine Typumwandlung, sondern um eine Umwandlung des Wertes in der Variablen i

kann häufiger gesehen werden als


Danke für den Hinweis. Umrechnung des Wertes der Variablen i. Was meinen Sie mit "in meinem Code"?
1. Der Wert
von i war 0, nach(string)i+ wurde er 1, dann 2 und so weiter bis 30. Warum brauche ich (string) und nicht nuri++?
2. Der Typ der Variablen i war int, und nach (string)i+ wurde er zu string? Nun, es handelt sich nicht um eine Wertumwandlung, sondern um eine Umwandlung des Variablentyps.


Und auch .... Vielleicht können Sie mir erklären, was die gelben Pluspunkte bedeuten. Oder wofür sind sie da?

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";

Vielen Dank für die Erklärung.

 
ANDREY:

Danke für den Hinweis. Konvertieren Sie den Wert der Variablen i. Was ist mit meinem Code gemeint?
1. Der Wert
von i war 0, nach(string)i+ wurde er 1, dann 2 und so weiter bis 30. Warum brauche ich (string) und nicht nuri++?
2. Der Typ der Variablen i war int, und nach (string)i+ wurde er zu string? Nun, es handelt sich nicht um eine Wertumwandlung, sondern um eine Transformation des Variablentyps.


Und auch .... Vielleicht können Sie mir erklären, was die gelben Pluspunkte bedeuten. Oder wofür sind sie da?

Vielen Dank für die Erklärung.

Typkonvertierung oder explizite Typkonvertierung sind gleichwertig. In der Dokumentation werden beide Ausdrücke verwendet. Sie haben richtig bemerkt, Alexey's caveat, es ist Art Umwandlung, dass...

Weiter: Wir haben mehrere Strings

  1. i vom Typ int, der explizit in den Typ string konvertiert wurde (lassen Sie ihn 0 sein)
  2. ": "
  3. eArray[i] wird über die Funktion DoubleToString in den Typ String umgewandelt (z. B. 1,6251)
  4. ", "

Der Wert von i wird in der Schleife bei jeder Iteration inkrementiert und gelangt von dort in diese Zeichenkette...

Beachten Sie, dass zwischen diese Zeichenfolgen Pluszeichen gesetzt werden. Diese Pluspunkte addieren sich zu einer Zeile. Das Ergebnis ist die Zeichenkette "0: 1.6251", und diese Zeichenkette wird mit dem Operator += an die Zeichenkette in der Variablen eStr angehängt


 
ANDREY:

Danke für den Hinweis. Konvertieren Sie den Wert der Variablen i. Was ist mit meinem Code gemeint?
1. Der Wert
von i war 0, nach(string)i+ wurde er 1, dann 2 und so weiter bis 30. Warum brauche ich (string) und nicht nuri++?
2. Der Typ der Variablen i war int, und nach (string)i+ wurde er zu string? Nun, es handelt sich nicht um eine Wertumwandlung, sondern um eine Umwandlung des Variablentyps.


Und auch .... Vielleicht können Sie mir erklären, was die gelben Pluspunkte bedeuten. Oder wofür sind sie da?

Vielen Dank für die Erklärung.

Mit gelben Pluszeichen bilden Sie eine Zeichenkette (Text), die Sie mitPrint() ausgeben;

Sie können dasselbe mit StringConcatenate() tun

eStr+=StringConcatenate((string)i,": ",DoubleToString(eArray[i],4),", ");
 
Alekseu Fedotov:

Mit dem gelben Pluszeichen bilden Sie eine Zeichenkette (Text), die Sie mitPrint() ausgeben;

Sie können dasselbe mit StringConcatenate() tun

Ich rate davon ab, diese Funktion zu verwenden, da sie in MQL5 ganz anders funktioniert als in MQL4. Daher kann es schwierig sein, sie zu verstehen, wenn Sie zu MQL5 wechseln.


Aber vielleicht täusche ich mich...

mql4

string  StringConcatenate( 
   void argument1,         // первый параметр любого простого типа  
   void argument2,         // второй параметр любого простого типа 
   ...                     // следующий параметр любого простого типа 
   );

mql5

int  StringConcatenate( 
   string&  string_var,   // строка для формирования 
   void argument1         // первый параметр любого простого типа  
   void argument2         // второй параметр любого простого типа 
   ...                    // следующий параметр любого простого типа 
   );

Wie Sie sehen können, ist es in mql5 sehr ähnlich wie bei der einfachen Addition von Zeichenketten.

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
Und die Typumwandlung erfolgt in dieser Funktion ohne weitere Probleme.
 
Alexey Viktorov:

Ich empfehle nicht, diese Funktion zu verwenden, da sie in MQL5 anders funktioniert als in MQL4. Daher kann es schwer zu verstehen sein, wenn Sie zu MQL5 wechseln

Vielen Dank für die wertvollen Informationen

 
Alekseu Fedotov:

Mit dem gelben Pluszeichen bilden Sie eine Zeichenkette (Text), die Sie mitPrint() ausgeben;

Sie können dasselbe mit StringConcatenate() tun

Danke für die neuen Informationen für mich

 
ANDREY:

Vielen Dank für die wertvollen Informationen

Ich habe meine eilig verfasste Nachricht ergänzt.

Es ist bereits jedem klar, wie dankbar Sie für jeden sind, der Ihnen etwas erklärt. Dehnen Sie das Thema nicht mit separaten Nachrichten aus...

 
Alexey Viktorov:

Weiter: Wir haben mehrere Strings

  1. i vom Typ int, der ausdrücklich vom Typ string ist (z. B. 0)
  2. ": "
  3. eArray[i] wird mitDoubleToString in einen String umgewandelt (z. B. 1,6251)
  4. ", "




Warum kann 1,6251 nicht wie i explizit in den Typ String umgewandelt werden ? Es ist kürzer und spart Rechenressourcen....., wie mir scheint.

Danke für die Erklärung

 
Alexey Viktorov:

Ich habe meinen eilig geschriebenen Beitrag ergänzt.

Es ist bereits jedem klar, wie dankbar Sie für jeden sind, der Ihnen etwas erklärt. Dehnen Sie das Thema nicht mit separaten Nachrichten aus...

Ja. Dann wird ein Dankeschön für jede Ihrer Antworten standardmäßig impliziert (wird in einer Variablen gespeichert :):):) ).... wenn es Ihnen nichts ausmacht.

Grund der Beschwerde: