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

 
Ant_TL:

In der Tat bin ich auf eine Situation gestoßen, in der der Fehler durch eine der Allzweckfunktionen verursacht wurde, die sowohl innerhalb als auch außerhalb der Auftragsverarbeitungsschleifen verwendet werden konnten, d. h. bevor ein Auftrag ausgewählt wurde, was zu dem Fehler führte. Wenn wir universelle Servicefunktionen erstellen wollen, die mit Aufträgen arbeiten und sowohl nach der Auswahl eines Auftrags als auch davor verwendet werden können, sowohl bei offenen Aufträgen als auch wenn es überhaupt keine Aufträge gibt, sollten wir einen solchen Mechanismus verwenden, wie ich ihn auf der vorherigen Seite erwähnt habe, um diesen Fehler zu vermeiden.

Ich habe bereits früher in diesem Thread darüber geschrieben, dass die Auftragsauswahl nicht an Bibliotheksmodule und zurück weitergegeben wird.


Anton, auch dir alles Gute zum Geburtstag!
 
grell:

Gewöhnen Sie sich daran, dass jede Handelsoperation ihre eigene Auftragsauswahl hat, und es wird keine Probleme geben. Und, ja, Sie haben richtig geschrieben, es kann nur eine Bestellung ausgewählt werden. Alles andere wird durch Arrays gelöst.

Ich habe nicht von der Situation gesprochen, in der Funktion B() versucht, eine Auftragsauswahl von Funktion A() abzufangen, um damit zu arbeiten. Umgehung der Auftragsauswahl. Der Punkt ist ein anderer. Aber es kann nützlich sein.

 
tara:

Anton, auch Ihnen ein frohes Fest!

Auch Ihnen schöne Feiertage!

 
FAQ:

Sie vergessen immer wieder, dass jeweils nur ein Auftrag ausgewählt werden kann. Exit = speichert die Liste der Aufträge in einem Sparpool (Ihr Array). eine globale Variable lastorder ist nicht genug. eine Variante vom Typ lastords[ticket][function] wäre besser.

Alle Aufträge in einem Array zu halten, ist für komplexe Grid-EAs geeignet, aber nicht für alle EAs. In meiner Situation ist das so, als würde man mit einer Kanone auf einen Spatzen schießen. Ich vergesse nicht, dass nur eine Bestellung ausgewählt werden kann. Ich wollte nur darauf hinweisen, dass wir nicht in der Lage wären, herauszufinden, ob sie gewählt wurde (nicht irgendeine bestimmte Reihenfolge, sondern ob überhaupt eine beliebige Reihenfolge bei diesem Tick gewählt wurde, d.h. ob ein Order Select erfolgreich aufgerufen wurde), ohne dass ein Fehler auftritt. Eine Variable des Typs "lastorder" reicht für diesen Zweck jedoch völlig aus.

 
Ant_TL:

Ich habe nicht von der Situation gesprochen, in der die Funktion B() versucht, eine Auftragsauswahl der Funktion A() abzufangen, um damit zu arbeiten. Umgehung der Auftragsauswahl. Der Punkt ist ein anderer. Auch wenn es nützlich sein mag.


Geben Sie mir ein Beispiel für eine Situation, damit ich verstehe, warum es notwendig ist, mit mehr als einem Auftrag zu arbeiten. Übrigens, schöne Feiertage!
 
grell:

Nennen Sie mir ein Beispiel für eine Situation, damit ich verstehe, warum es notwendig ist, mit mehr als einem Auftrag zu arbeiten. Übrigens, frohe Festtage!

Auch Ihnen schöne Feiertage! -))

Ich bringe es zur Sprache, sobald mir etwas Interessantes einfällt. Situationen, in denen es schwierig ist, auf diesen Mechanismus zu verzichten. Andernfalls werden sie mir sofort Ratschläge zur "richtigen" Programmierung geben. ))

 
Ant_TL:

Alle Aufträge in einem Array zu halten, ist für komplexe Grid-EAs geeignet, aber nicht für alle EAs. In meiner Situation ist das so, als würde man mit einer Kanone auf einen Spatzen schießen.


Es ist Ihre Entscheidung, ob Sie eine Schleuder für jeden Spatz zurechtbiegen und Zeit damit verschwenden wollen, sie zu justieren. Ich ziehe es vor, eine Kanone für jedes Projektil einmal zu machen und sicher sein, dass, wenn es notwendig sein wird, auf Spatzen zu schießen - wir laden Bockshorn und setzen alle auf einmal :)
 
Ant_TL:

Auch Ihnen schöne Feiertage! -))

Ich bringe es zur Sprache, sobald mir etwas Interessantes einfällt. Situationen, in denen es schwierig ist, auf diesen Mechanismus zu verzichten. Andernfalls werden sie mir sofort Ratschläge zur "richtigen" Programmierung geben. ))


Worauf ist zu achten, wenn Sie nachweisen wollen, dass es sich um eine alltägliche Routinesituation handelt? Sie können mit einer Reihe von Aufträgen arbeiten und diese trotzdem einzeln auswählen, ohne befürchten zu müssen, den Überblick über den Auftrag zu verlieren. Und wenn es sich um eine Bestellung handelt, ist die Auswahl von RETURNS in einer anderen Funktion nichts im Vergleich zur Suche nach einer schwarzen Katze in einem dunklen Raum.
 
grell:

Was gibt es da zu finden, wenn Sie beweisen wollen, dass es sich um eine normale Alltagssituation handelt? Sie können mit einer Vielzahl von Aufträgen arbeiten und diese trotzdem nacheinander abarbeiten, ohne Angst zu haben, den Überblick zu verlieren. Und wenn es sich um einen Auftrag handelt, ist die Auswahl in einer anderen Funktion nichts im Vergleich zur Suche nach einer schwarzen Katze in einem dunklen Raum.

Nun, ich bin auf diese Situation in einem meiner EAs gestoßen, als ich meine Template-Funktion MyTotal() aufgerufen habe, um die Anzahl aller Aufträge zu ermitteln, die für ein bestimmtes Symbol offen sind. Offensichtlich habe ich es in einer Schleife in einigen früheren EAs verwendet und daher das Speichern und Wiederherstellen der aktuellen Orderauswahl hinzugefügt. Und dann habe ich es ohne die Schleife verwendet, vor orderselect und deshalb bekam ich den Fehler. Ich möchte, dass meine Vorlagenfunktionen universell sind und sowohl in Schleifen als auch außerhalb von Schleifen verwendet werden können. Daher werde ich diese Vorlage mit MySelect/TickSelect-Wrapper verwenden, da ich MySelect ohnehin in allen Schleifen anstelle von OrderSelect verwende, um die Codegröße zu reduzieren.

Ich denke, wir können sehen, warum wir in dieser speziellen Situation mehr als einen Auftrag gleichzeitig bearbeiten müssen. Wir arbeiten mit einer Bestellung in der Hauptschleife, und dann rufen wir MyTotal auf, das alle Bestellungen durchgehen sollte, um festzustellen, wie viele wir brauchen.

 
Korrigiere deinen Fehler und geh ins Bett, du hast morgen einen anstrengenden Tag :)