Schönen Guten Tag,
ich hab da mal ein paar Fragen zum Sortierer und zum Lager.
Ich hab eine kleine Simulation, bestehend aus Quelle - Sortierer - Lager.
Die Quelle erstellt 10BEs mit einem Attribut "Priorität" (Bei mir einfach 10, 20, .... ,100).
Der Sortierer soll diese absteigend nach der Priorität sortieren und denn die 3BEs mit der höchsten Priorität ins Lager packen.
Dies funktioniert auch wunderbar.
Nun will ich aber ein BE aus dem Lager entfernen, die anderen beiden wieder in den Sortierer umlagern und anschließend wieder sortieren.
So dass nun 9 BEs im Sortierer sind und davon sollen jetzt wieder die 3 mit der höchsten Priorität in das Lager gepackt werden.
Ich hab mir 2 Methoden geschrieben um einmal die Reihenfolge im Sortierer und eine für die Reihenfolge im Lager in der Konsole anzeigen zu lassen.
Dadurch ist mir aufgefallen, dass im ersten Schritt alles funktioniert.
Also:
Im Sortierer: 100, 90, 80,.....,10
Nachdem 3 BEs ins Lager geliefert wurden:
Im Lager: 100, 90, 80
Jetzt entferne ich das BE mit der Priorität 90. Die beiden anderen kommen wieder zurück zum Sortierer.
Jetzt
Im Sortierer: 100, 80, 70,....,10 (wie gewollt)
Jetzt das eigentliche Problem:
Nachdem 3 BEs ins Lager geliefert wurden:
Im Lager: 100, 70, 80
Also wird das BE was neu mit ins Lager kommt immer an die Stelle des BEs gepackt, welches zuvor entfernt wurde.
Zur Hilfe mein Quellcode zum Entfernen der BEs:
Code:
.Lager.BE(1).vernichteObjekt;
.Lager.BE(2).umlagern(Sortierer);
.Lager.BE(1).umlagern(Sortierer);
.Sortierer.sortieren;
Der Eingang des Lagers wird immer gesperrt, wenn im Lager 3 BEs sind. Geöffnet wird das Lager manuell durchs ausführen einer Methode.
Wo könnte mein Fehler liegen?
Gruß
NiemeyerLukas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP