Hallo liebes Forum,
heute habe ich ein Sortierproblem - mit dem Sortierer...
Anhand einer selbstdefinierten Tabelle (S_Schluessel) möchte ich LKWs mit den Namen LKW_A ... LKW_D im Sortierer sortieren. In der Tabelle habe ich jedem LKW-Namen eine Zahl zwischen 1 und 4 zugeordnet und mit einer Methode sollen diese Zahlen ausgelesen werden und nach Größe absteigend sortiert werden.
Bsp:
wurde LKW_B die Nummer 4 zugeteilt, soll er als erstes wieder aus dem Sortierer rausfahren - obwohl er z.B. als drittes Fahrzeug in den Sortierer reingefahren ist.
So.
Grundlegend verstehe ich schonmal nicht wie dieser Sortierer und weiter auch die Methode, die ich ihm zuweisen kann, funktioniert und was mit den Werten passiert, die die Methode zurückgibt. Ok, das wird dann in die Inhaltsliste des Sortierers eingetragen, aber selbst wenn ich diese Liste direkt anspreche und sortiere kommen die LKWs immer noch nicht in der Reihenfolge raus die ich definiert habe.
Im Forum habe ich schon gelesen, dass der Sortierer keine Sortierzeit benötigt, was erklären würde, dass jeder einzelne LKW einfach so durch den Sortierer durchflutscht. Deshalb habe ich den Ausgang mal gesperrt, um zu schauen was dann passiert - aber auch dann erreiche ich nicht das gewünschte Ergebnis. Ich mein: wie kann ich was im Sortierer sortieren, wenn immer nur ein BE im Sortierer ist?!
Hier mal die Methode, die ich für den Sortierer gebastelt habe, die der Sortierer auch versteht aber dennoch nicht so ausliest, wie ich das gerne hätte. Ach ja, die Methode steht selbstverständlich im Sortierer unter Attribute --> Sortierkriterium.
: real
is
x: integer;
y: integer;
LKW_Name:String;
do
--S_1.AusgangGesperrt:=true;
LKW_Name:=@.Name;
print LKW_Name;
-- das finden der LKW_A, LKW_B, ... muss in eine Schleife eingebaut werden,
-- die nach und nach alle LKWs ausliest, um die Priorität der Reihenfolge
-- zurückzugeben.
S_Schluessel.ZeigerX:=1;
S_Schluessel.ZeigerY:=1;
S_Schluessel.finden(LKW_Name);
x:=S_Schluessel.ZeigerX;
y:=S_Schluessel.ZeigerY;
result := S_Schluessel[x+1,y];
--S_1.inhaltsliste.sortieren(1,"ab");
print result;
/*if S_1.statAnzahlEin<4 then
S_1.AusgangGesperrt:=true;
else
S_1.AusgangGesperrt:=false;
end;*/
print "testmarke";
end;
Freue mich wie immer auf Antwort:-)
Danke.
Gruß
Heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP