[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 313

 
drknn:


Nein. Sie müssen nicht bei jeder Iteration eine Variable innerhalb der Schleife deklarieren.

Hmmm... danke
 
drknn:

Ich hoffe, ich habe nichts gelöscht, sonst würde sich der Compiler über das Wort else beschweren:


bool Torg=true;

if(OrdersTotal()>0){
for(int i=OrdersTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
}
}
}
 
drknn:
Vladimir, der Genosse wurde bereits verbannt. Entfernen Sie den Link aus dem Zitat.
 
GarKain:

Ich hoffe, ich habe nicht alles gelöscht, was ich brauche, sonst würde sich der Compiler über das Wort else beschweren:

if(OrdersTotal()>0){/// unnötige Zeile - wenn es keine Aufträge gibt, dann steht der Schleifenzähler auf Null und die Schleife wird nicht ausgeführt
for(int i=OrdersTotal()-1;i>=0;i--){/// alle Aufträge durchgehen
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// wenn kein Auftrag ausgewählt ist , dann...
if(OrderMagicNumber()!=MagicNumber) continue; //wenn die magische Zahl nicht unsere ist, dann weiter zu einer anderen Bestellung
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// Was aber, wenn der Auftrag immer noch aus der Liste ausgewählt ist?
}
}


P.S.

Die Zeile, die bei der Auswahl eines Auftrags eine Fehlernummer anzeigt, sollte nicht aus irgendeinem Grund entfernt worden sein - es kann vorkommen, dass sie explodiert. Im Allgemeinen ist es besser, die Fehlerbehandlung dort einzusetzen, wo sie auftreten kann.

 
drknn:
if(OrdersTotal()>0){/// unnötige Zeile - wenn es keine Aufträge gibt, steht der Schleifenzähler auf Null und die Schleife wird nicht ausgeführt
for(int i=OrdersTotal()-1;i>=0;i--){/// alle Aufträge durchgehen
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// wenn kein Auftrag ausgewählt ist , dann.
if(OrderMagicNumber()!=MagicNumber) continue; //wenn die magische Zahl nicht unsere ist, dann weiter zu einer anderen Bestellung
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// Was aber, wenn der Auftrag immer noch aus der Liste ausgewählt ist?
}
}


Wie wäre es damit?

bool Torg;
if(OrdersTotal()==0) Torg=true;
if(OrdersTotal()>0){
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
if(OrderOpenTime()<Time[0]) Torg=true;
}
}
}
 
GarKain:
Wie wäre es damit?

Was passiert, wenn Sie versuchen, diese Schleife im Skript selbst zu überprüfen? Nun, einfach durch Ausdrucken des Ergebnisses - welche Position die Variable Torg in verschiedenen Fällen einnimmt. Glauben Sie, Sie können es nicht selbst tun?
 
drknn:
Was passiert, wenn Sie versuchen, diese Schleife im Skript selbst zu überprüfen? Nun, einfach durch Ausdrucken des Ergebnisses - welche Position die Variable Torg in verschiedenen Fällen einnimmt. Glauben Sie, Sie können es nicht selbst tun?
Das glaube ich nicht.
 
GarKain:
Das glaube ich nicht.

Herunterladen - es wird helfen - http://depositfiles.com/files/eg4fmn3bp
 
GarKain: Die Klassen sind von unten nach oben nummeriert. Drücken Sie die Loge-Taste und beginnen Sie mit den Skripten.
 
Es stellte sich heraus, dass eine unbegrenzte Anzahl von Aufträgen auf einer neuen Leiste geöffnet wurde. Vorher wurden sie alle auf einmal geöffnet, aber jetzt wird erwartet, dass einer geöffnet wird und alle anderen werden geöffnet.