So prüfen Sie, ob ein Auftrag ausgewählt ist - Seite 4

 
Figar0:

In der Tat gibt es eine Menge Demagogie.

bool OrderSelect( int index, int select, int pool=MODE_TRADES)
Mit dieser Funktion wird ein Auftrag ausgewählt, der als nächstes bearbeitet werden soll. Gibt TRUE zurück, wenn die Funktion erfolgreich abgeschlossen wurde. Gibt FALSE zurück, wenn die Funktion fehlschlägt. Sie müssen GetLastError() aufrufen, um Informationen über den Fehler zu erhalten.

Wir müssen nur wissen, ob ein Auftrag ausgewählt ist oder nicht.

Ich habe es am Anfang des Themas erklärt, ist das nicht klar?

Wir haben eine Funktion, die potenziell Aufträge bearbeitet, d.h. sie selektiert und analysiert. Sie kann von verschiedenen Codefragmenten aus aufgerufen werden, auch von solchen, die bereits einen Auftrag ausgewählt haben, mit dem sie arbeiten sollen. Wenn diese separate Funktion den bereits ausgewählten Auftrag nicht speichert und seine Auswahl wiederherstellt, führt dies zu Fehlern in der EA-Logik, da bei der Rückkehr aus dieser Funktion der vor dem Aufruf ausgewählte Auftrag falsch ist. Um diese Fehler zu vermeiden, müssen wir uns den aktuell ausgewählten Auftrag an der Stelle seines Aufrufs in jeder Hilfsfunktion, die selbst Aufträge verarbeitet, merken und seine Auswahl zurückgeben, wenn sie fertig ist. Wie man diese Aufgabe einfach und fehlerfrei bewältigen kann - das ist die Frage des aktuellen Themas

// Dies setzt voraus, dass eine Bestellung über OrderSelect ausgewählt wurde (oder ein Fehler vorliegt).

Warum ein Fehler? Wenn der Auftrag nicht gewählt wird, ist diese Aktion einfach nicht notwendig, aber es scheint unmöglich zu sein, ohne spezielle Tricks im Voraus herauszufinden, ob der Auftrag gewählt wird oder nicht

// Warum also sollte sie erneut ausgewählt werden?

Deshalb bleibt nach der Rückkehr aus dieser Funktion in den aufrufenden Teil des Codes die in diesem Teil des Codes vor dem Aufruf der Funktion gewählte Reihenfolge gewählt - damit Operationen, die mit der aktuell gewählten Reihenfolge durchgeführt werden, nicht zu Fehlern führen

 
FAQ:

Nein, er ist wirklich aufgetankt.
Hat er dafür eine Genehmigung? Es ist keine Waffe!)
 
Ant_TL:

Ich habe am Anfang des Threads alles erklärt, ist das so unklar?

Wir haben eine Funktion, die potenziell mit Aufträgen arbeitet, d. h. sie selektiert und analysiert sie. Sie kann von verschiedenen Codefragmenten aus aufgerufen werden, auch von solchen, die bereits einen Auftrag ausgewählt haben, mit dem sie arbeiten sollen. Wenn diese separate Funktion den bereits ausgewählten Auftrag nicht speichert und seine Auswahl wiederherstellt, führt dies zu Fehlern in der EA-Logik, da bei der Rückkehr aus dieser Funktion der vor dem Aufruf ausgewählte Auftrag falsch ist. Um diese Fehler zu vermeiden, müssen wir uns den aktuell ausgewählten Auftrag an der Stelle seines Aufrufs in jeder Hilfsfunktion, die selbst Aufträge verarbeitet, merken und seine Auswahl zurückgeben, wenn sie fertig ist. Wie man diese Aufgabe einfach und fehlerfrei bewältigen kann, ist die Frage dieses Themas

1. Zur Übergabe der Nummer des vor dem Aufruf der Funktion ausgewählten Auftrags an die Funktion.

2. Wenn die Funktion beendet ist, wählen Sie denselben Auftrag erneut aus.

Woher weiß ich, was Sie bekommen möchten? Sie müssen schon etwas genauer sein :(

 
tara:

1. Senden Sie die Nummer des Auftrags, der vor dem Aufruf der Funktion ausgewählt wurde.

2. Wenn die Funktion beendet ist, wählen Sie denselben Auftrag erneut aus.

Woher weiß ich, was Sie bekommen möchten? Sie sollten sich deutlicher ausdrücken :(

Ja, das verstehe ich, aber ich würde gerne Informationsfunktionen schreiben, wie z.B. Gesamtgewinn oder offene Aufträge, die aufgerufen werden können, ohne dass sie etwas an der Programmausführungslogik ändern. Ich denke, das ist sinnvoll.

Es ist nicht immer trivial, die ausgewählte Reihenfolge in der aufrufenden Funktion zu übergeben. Stellen Sie sich vor, dass die Verschachtelung von Aufrufen >1 ist, sollten wir ein Ticket an jede Funktion übergeben, damit eine kleinere Info-Funktion es verwenden kann?

Es wäre logischer, OrderSelect und OrderTicket mit einem Wrapper zu versehen, der Informationen über die aktuell gewählte Bestellung in einer separaten Variablen speichert und abruft, aber hier kommt es zu einer Verdoppelung der Informationen (das Terminal weiß bereits, ob die Bestellung ausgewählt wurde, aber wir können diese Informationen nicht ohne einen möglichen Fehler weitergeben). Mit anderen Worten, es kommt entweder zu einer Verdoppelung der Informationen oder zu einer übermäßigen Verkomplizierung der Funktionen (wir übergeben auch die ausgewählte Reihenfolge von ganz oben in jeden Parameter), oder wir müssen Fehler bei der Programmausführung erzeugen.

 
Ant_TL:

Ja, das verstehe ich, aber ich würde gerne Informationsfunktionen schreiben, wie z.B. den Gesamtgewinn oder die Anzahl der offenen Aufträge, die aufgerufen werden können, ohne dass sie die Ausführungslogik des Programms verändern. Ich denke, das ist sinnvoll.

Das macht Sinn, aber in diesem Fall sollten wir zumindest die Funktionen in "weiße" und "schwarze" Funktionen unterteilen. Die im ersten Fall gewählte Bestellnummer wird gespeichert und bei einem Verstoß im zweiten Fall wiederhergestellt.

So einfach scheint es zu sein.

 
Ant_TL:

Ja, das verstehe ich, aber ich würde gerne Informationsfunktionen schreiben, wie z.B. den Gesamtgewinn oder die Anzahl der offenen Aufträge, die aufgerufen werden können, ohne dass sie die Ausführungslogik des Programms verändern. Ich denke, das ist sinnvoll.

Es ist nicht immer trivial, eine ausgewählte Reihenfolge in einer aufrufenden Funktion zu übergeben. Stellen Sie sich vor, dass die Verschachtelung von Aufrufen >1 ist, sollte dann nicht ein Ticket an jede Funktion übergeben werden, so dass eine kleinere Info-Funktion es verwenden könnte?

Schauen Sie sich Kims Funktionsbibliothek an und sehen Sie, dass jede Funktion die Aufzählung, die Auswahl und die Überprüfung des Tickets vornimmt und was dann bekannt sein muss. Ihre "Logik" erlaubt es Ihnen nicht, die alphabetischen Regeln der Programmierung zu lernen.
 
borilunad:
Schauen Sie sich die Funktionsbibliothek von Kim an, und Sie werden sehen, dass jede Funktion das Ticket aufzählt, auswählt und prüft, und dann, was Sie wissen müssen. Ihre "Logik" erlaubt es Ihnen nicht, die Grundregeln der Programmierung zu lernen.

Sie haben einen Ältesten auf einem Feld und einen Onkel in Kiew.

 
borilunad:
Schauen Sie sich Kims Funktionsbibliothek an und stellen Sie fest, dass jede Funktion die Aufzählung, die Auswahl und die Überprüfung der Fahrkarte vornimmt und was dann gelernt werden muss. Ihre "Logik" erlaubt es Ihnen nicht, die alphabetischen Regeln der Programmierung zu lernen.
Boris, das musst du nicht. Ich spreche von den alphabetischen Regeln.
 
Ant_TL:

Ein kleiner Ältester in einem Garten und ein Onkel in Kiew.

Ganz genau! Es geht auch um dich: "Der Hund hatte einen Hund...".
 
tara:
Boris, das ist nicht nötig. Ich spreche von den ABCs.
Natürlich, wenn er schon alles weiß, warum gibt es dann Fehler? Er sollte seine eigene Sprache ohne Fehler schaffen, dann wird es allen gut gehen! Und wo war er vorher?!