![]() |
Objektliste sortieren und anschliessend anpassen
Hallo, habe ein Problem und komme nicht weiter. Ich habe eine Objektliste voller Instanzen gleicher Objektklassen.
Die Instanzen sind Telegramme mit den Atributen Sendezeitpunkt, und ID Die Sendezeitpunkte werden mit jedem Telegramm das zur Liste geadded wird um 7 erhöht. Die Objektliste wird zur Laufzeit mit weiteren Telegrammen gefüllt. Wenn jedoch ein neues Telegramm zur Liste geadded werden soll, soll zunächst überprüft werden ob in der Liste schon Instanzen mit gleicher ID vorhanden sind. Wenn ja soll das Telegramm das in die Liste soll den Sendezeitpunkt des gefundenen Telegramms + 7 us bekommen. Die nachfolgenden Telegramme sollen dementsprechend angepasst werden indem die Sendezeiten auch um 7 us erhöht werden. Hab schon einiges versucht aber leider komme ich nicht hin. Sobald in der Lsite mehr als ein Telegramm mit der gleichen Id vorkommt kommt es zu falschen Rechnungen. |
Re: Objektliste sortieren und anschliessend anpassen
wie hast du das denn versucht?
in deinem Fall müßtest du erstmal das Objekt mit der ID und der größten Zeit raussuchen und dann von diesem ausgehn. |
Re: Objektliste sortieren und anschliessend anpassen
Zitat:
Wenn das Telegrammobjekt drei Properties hätte: ID, Sendezeitpunkt und Position und beim Einfügen in die Liste das Property Position automatisch gesetzt würde, dann würde es einen Sinn ergeben. Liste vor dem Einfügen:
Code:
Nach dem Einfügen:
'A380', 8:20:15, 1
'A380', 8:21:45, 2 'B52', 9:12:00, 1
Code:
Noch ist die Liste unsortiert, aber man kann leicht nach ID und Position sortieren.
'A380', 8:20:15, 1
'A380', 8:21:45, 2 'B52', 9:12:00, 1 'A380', 8:25:30, 3 // das ist das eingefügte Objekt. Es hat autom. die Position 3 erhalten |
Re: Objektliste sortieren und anschliessend anpassen
@Himitsu
also erstmal die Objektliste nach der Zeit aufsteigend sortieren dann schauen ob ein Object mit gleicher ID vorhanden ist wenn ja überprüfen ob es das einzige ist, wenn mehrere dann das finden mit der größten Zeit, dann die Zeit des neuen Objekts sowie die Zeiten der nachfolgenden Objekte anpassen Weiß nicht genau ob das so richtig gedacht ist. Hab das Gefühl dass es zu umständlich ist. @shmia fast genau so mein ich das. Allerdings müssen die Zeiten der nachfolgenden Objekte angepasst werden. Es gibt natürlich noch jede Menge andere Attribute. Eigentlich habe ich in jeder Instanz die beiden Attribute Host und Port die übereinstimmen müssen. Wollte es nur nicht noch komplizierter machen :) Hier mal dein Beispiel angepasst. Host Port t , rank 'A380', 21 , 7,2 , 1 'A380', 21 , 14,2 , 2 'B52', 6 , 28,2 , 1 'B747', 8 , 42,2 , 4 'B52', 6 , 35,2 , 3 'A380', 24 , 48,2 , 2 'A380', 21 , 21,2 , 2 Die Instanzen werde in der Anwendung erstellt. Wenn also eine Instanz in die Liste kommt, könnte sofort überprüft werden ob schon eine Instanz mit dem gleichen Host/Port vorhanden ist. |
Re: Objektliste sortieren und anschliessend anpassen
Hier das ganze nochmal etwas deutlicher
Delphi-Quellcode:
Aktuelle Liste: Kommt dazu:
21 , 7 , 1 6, 55 , 8 21 , 14 , 2 6 , 28 , 4 8 , 42 , 6 6 , 35 , 5 24 , 49 , 7 21 , 21 , 3 Neue Liste: 21 , 7 , 1 21 , 14 , 2 6 , 28 , 4 8 , 49 , 7 6 , 35 , 5 24 , 56 , 8 21 , 21 , 3 6 , 42 , 6 |
Re: Objektliste sortieren und anschliessend anpassen
Der Ablauf sollte nach deiner Beschreibung und den Beispieldaten im Prinzip so aussehen:
Code:
Ob das Gesamtkonzept sinnvoll ist, bezweifle ich.
- finde alle Telegramme mit der selben ID
- wähle davon das Telegramm mit dem höchsten Zeitpunkt - wenn ein Telegramm gefunden wurde: begin - erhöhe bei allen Telegrammen die einen höheren Zeitpunkt haben den Zeitpunkt um 7 - füge das neue Telegramm mit dem Zeitpunkt des gefundenen Telegramms + 7 ein end else begin - finde das Telegramm mit dem höchsten Zeitpunkt - wenn ein Telegramm gefunden wurde: begin -füge das neue Telegramm mit dem Zeitpunkt des gefundenen Telegramms + 7 ein end else begin -füge das neue Telegramm mit dem Zeitpunkt 7 ein end end |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz