Fehler, Irrtümer, Fragen - Seite 1495

 
Karputov Vladimir:
Hören Sie auf, Fragen im Namen imaginärer (oder fiktiver) Abonnenten zu stellen. Wenn ein Abonnent eine Frage hat, soll er sie selbst stellen. Andernfalls werde ich es als Werbung für das Signal betrachten.
Ich fürchte, Sie haben mich missverstanden. Mein Signal braucht schon lange keine Werbung mehr. Ich versuche, die technischen Aspekte des von mir genutzten Dienstes zu verstehen. Trotzdem bin ich der erste, der angesprochen wird.
 
Artem Prischepa:
Ich fürchte, Sie haben mich missverstanden. Mein Signal braucht schon lange keine Werbung mehr. Ich versuche, die technischen Aspekte des von mir genutzten Dienstes selbst zu verstehen. Trotzdem bin ich der erste, der angesprochen wird.
Studieren Sie in diesem Fall die Fragen in denFAQ zum Signaldienst(erster Beitrag).
 

Ist das ein Fehler oder verstehe ich die Sprache nicht richtig?

void Func( int & Tmp )
{
  return;
}

void OnStart( void )
{
  int Tmp1, Tmp2;
  
  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected 
    
  return;
}
 
zaskok3:

Das ist ein Fehler oder mein schlechtes Verständnis der Sprache:

Das Ergebnis eines ternären Ausdrucks ist der Inhalt der Variablen Tmp1 oder der Variablen Tmp2.

Und die Func-Funktion sollte nicht das Ergebnis des Ausdrucks übergeben, wie Sie es haben, sondern eine Referenz

 

Wie kann ich mit diesem Problem umgehen?

Nach der Installation des Expert Advisors auf dem Chart, der die RENCO-Charts erstellt, hängt sich das Terminal permanent auf.

Ein Neustart des Terminals hilft nicht. Ich habe den Experten aus dem Ordner gelöscht - es hat nicht geholfen!

Was ist zu tun?

win7/64 mt4/950

 
Slawa:

Das Ergebnis eines ternären Operationsausdrucks ist der Inhalt der Variablen Tmp1 oder der Variablen Tmp2.

Ist es der Inhalt und nicht die Variable selbst? Dies ist wahrscheinlich der Grund für mein schlechtes Verständnis. Ich danke Ihnen!

Ich habe die ternäre Alternative ausprobiert, aber sie hat nicht funktioniert:

//  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected
  
  // Так не пашет
  (0 > 1) ? Func(Tmp1) : Func(Tmp2); // 'Func' - expression of 'void' type is illegal
  
  // Так, конечно, работает
  if (0 > 1)
    Func(Tmp1);
  else
    Func(Tmp2);

Ternär ist hier ohne Zuordnung.

 
zaskok3:

Genau der Inhalt, nicht die Variable selbst? Offensichtlich hat sich hier mein mangelndes Verständnis gezeigt. Ich danke Ihnen!

Habe die ternäre Alternative ausprobiert, hat nicht funktioniert:

Ternär hier allerdings ohne Zuordnung.

Das Ergebnis einer ternären Operation ist entweder das Ergebnis des ersten Ausdrucks oder das Ergebnis des zweiten Ausdrucks, je nach dem Ergebnis des bedingten Ausdrucks.

Das Ergebnis muss irgendwo zugewiesen werden (oder Teil eines anderen Ausdrucks sein), da es ein rWert ist

Das ist in etwa dasselbe wie einfach zu schreiben

int a=1;
int b=2;

a + b;
 

Slawa:

Das Ergebnis muss irgendwo zugewiesen werden (oder Teil eines anderen Ausdrucks sein), da es sich um einen r-Wert handelt

Das ist ungefähr dasselbe wie das Schreiben von

Ersetze ich void Func durch int Func, so ist das Ergebnis in der Tat dasselbe. Mit der Leere ist das so eine Sache. Ist es nur wegen des hervorgehobenen Satzes?
 
zaskok3:
Wenn ich void Func durch int Func ersetze, ist das Ergebnis in der Tat dasselbe. Die Leere ist eine Katastrophe. Ist es nur wegen des hervorgehobenen Satzes?
Ja
 
Slawa:
Ja
Ich hab's. Danke für die Aufklärung!
Grund der Beschwerde: