Fehler, Irrtümer, Fragen - Seite 1554

 
-Aleks-:

Da ich in dem anderen Thread keine Antwort erhalten habe, wiederhole ich die Frage hier, vielleicht hilft das ja

"

Können Sie mir bitte sagen, was mein Fehler ist.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

Das Datum aus dem OpenSellTime-Array wird nicht gedruckt und auch nicht der zweite Teil des Ausdrucks - PriceOpenSell.

Und, kann nicht überprintf Befehlewie%G und%d finden.

"

Aber auch ein C-Tutorial wäre gut für Sie.
 
Alexey Kozitsyn:
Aber auch ein beliebiges C-Tutorial würde für Sie funktionieren.

Danke für die Antwort, aber der Link ist verwirrend... Ich kann es nicht auf Anhieb herausfinden - ich habe diesen Text in der Hilfe gesehen, bevor ich angefangen habe, im Forum zu schreiben.

Wenn ich das richtig verstehe, soll %d eventuelle Nullen ignorieren, während %G einen Wert ausgeben soll, ohne Nullen abzuschneiden? Ich bin kein Idiot, aber ich kann die Hilfe nicht verstehen, und ohne Verständnis kann ich nicht verstehen, warum mein String nicht richtig funktioniert...

 
-Aleks-:

Danke für die Antwort, aber der Link ist verwirrend... Ich kann es nicht auf Anhieb herausfinden - ich habe diesen Text in der Hilfe gesehen, bevor ich angefangen habe, im Forum zu schreiben.

Wenn ich es richtig verstehe, soll %d eventuelle Nullen ignorieren, während %G den Wert ausgeben soll, ohne Nullen abzuschneiden? Ich bin nicht dumm, aber ich kann die Hilfe nicht verstehen, und wenn ich sie nicht verstehe, kann ich auch nicht verstehen, warum mein String nicht richtig funktioniert...

Ich verwende diese Funktion bei meiner Arbeit nicht, aber ich glaube nicht, dass es schwierig ist, einfache Experimente selbst durchzuführen.
 
-Aleks-:

Danke für die Antwort, aber der Link ist verwirrend... Ich kann es nicht auf Anhieb herausfinden - ich habe diesen Text in der Hilfe gesehen, bevor ich angefangen habe, im Forum zu schreiben.

Wenn ich es richtig verstehe, soll %d eventuelle Nullen ignorieren, während %G den Wert ausgeben soll, ohne Nullen abzuschneiden? Ich bin nicht dumm, aber ich kann die Hilfe nicht verstehen, und wenn ich sie nicht verstehe, kann ich auch nicht verstehen, warum mein String nicht richtig funktioniert...

Lesen Sie hier.
 
Alexey Kozitsyn:
Ich verwende diese Funktion bei meiner Arbeit nicht, aber ich denke, Sie können einfache Experimente leicht selbst durchführen.

Aber ich habe es nachgeschlagen und verwende es, aber ich kann die genaue Syntax nicht herausfinden, weil sie nicht der Spezifikation entspricht.

%[Flaggen][Breite][.Genauigkeit][{h | l | ll | I32 | I64}]Typ

Es wird in der Hilfedatei nicht erwähnt, dass nicht alle Parameter verwendet werden dürfen. Und vor allem ist nicht klar, wo ich einen Fehler in der Syntax habe; vielleicht würde ich die Sache besser verstehen, wenn man mich darauf hinweisen würde.

 
Artyom Trishkin:
Lesen Sie es hier.

Ich danke Ihnen. Ich habe es flüchtig durchgelesen und nach den richtigen Informationen gesucht - es stellt sich heraus, dass der erste Teil eine Vorlage ist und ich ihn falsch verstanden habe... oder?

Zum Beispiel müssen Sie die Orte angeben, an denen die Variablen sein werden, in meinem Fall ist es ein Index des Arrays, die Zeit und die Anzahl vom Typ double, und dann die Variablen selbst. Nach der Logik des Artikels müsste es folgendermaßen aussehen

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

Oder ist es wieder falsch?

 
-Aleks-:

Ich danke Ihnen. Ich habe es flüchtig durchgelesen und nach den richtigen Informationen gesucht - es stellt sich heraus, dass der erste Teil eine Vorlage ist und ich ihn falsch erfunden habe... oder?

Zum Beispiel müssen Sie die Stellen angeben, an denen die Variablen stehen werden, in meinem Fall ist es ein Index des Arrays, die Zeit und die Anzahl vom Typ double, und dann die Variablen selbst. Nach der Logik des Artikels müsste es folgendermaßen aussehen

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

Oder ist es wieder falsch?

Die Stellen, an denen Variablen eingefügt werden, sind in der Vorlage mit einem %-Zeichen gekennzeichnet. Die gesamte Vorlage ist in Anführungszeichen gesetzt. Dann werden nach der Vorlage selbst durch Komma getrennte Variablen aufgeführt, die in der Vorlage angegeben sind. Von links nach rechts in der Reihenfolge, in der sie in der Vorlage geschrieben sind.

Außerdem gibt es alle Spezifikationen für die verschiedenen Arten von Variablen und ihre Formatierung. Blättern Sie einfach nicht durch, sondern beginnen Sie mit der Überschrift"Formatierung von Zeichenfolgen in der Vorlage".

 
Artyom Trishkin:

Nun, die Vorlage ist sehr eindeutig - die Stellen, an denen Variablen eingefügt werden, sind in der Vorlage durch ein %-Zeichen gekennzeichnet. Die gesamte Vorlage ist in Anführungszeichen gesetzt. Nach der Vorlage selbst werden die Variablen der Vorlage durch Kommata getrennt aufgelistet. Von links nach rechts in der Reihenfolge, in der sie in der Vorlage geschrieben sind.

Außerdem gibt es alle Spezifikationen für die verschiedenen Arten von Variablen und ihre Formatierung. Lesen Sie einfach ohne zu blättern, beginnend mit der Überschrift"Formatierung von Zeichenketten nach Vorlage".

Das ist, wie ich es geschrieben habe - in Anführungszeichen die Vorlage und dann in der Reihenfolge der Variablen, was ist falsch?
 
-Aleks-:
So habe ich es geschrieben - in Anführungszeichen die Vorlage und dann die Variablen in der Reihenfolge, was ist falsch?

"OpenSellTime[%index muss hier eingegeben werden] = %time, PriceOpenSell[%index] = %price" - ist dies das Muster?

Wenn ja, sollte es so sein:

"OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f"

Die Werte selbst sollten durch Kommas getrennt als nächstes aufgeführt werden:

 ,i,OpenSellTime[i],i,PriceOpenSell[i]

insgesamt:

printf("OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f",i,OpenSellTime[i],i,PriceOpenSell[i]);

... Nun ... wenn ich nichts ausgelassen habe...

 

MQL4, DoubleToStr() und DoubleToString(). In DoubleToStr() für das 2. Argument "Default 8" hinzufügen.

Code:

#property strict
void OnStart()
  {
   Print("1) DoubleToStr(0.123456789) = ",DoubleToStr(0.123456789));
   Print("2) DoubleToString(0.123456789) = ",DoubleToString(0.123456789));
  }

In den Protokollen wird das Ergebnis für sie = 0.12345679 sein, d.h. die Funktion rundet den Wert; dies wird in der Hilfe nicht geschrieben. Ich denke, es lohnt sich, mehr darüber zu schreiben oder zumindest Beispiele dieser Art aufzuführen:

string value1=DoubleToStr(1.28473418, 5);
// содержимое строки value1 - "1.28473"

string value2=DoubleToStr(1.28473418, 3);
// содержимое строки value2 - "1.285"

wo die Rundung sichtbar wird.

Grund der Beschwerde: