AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objektliste sortieren und anschliessend anpassen
Thema durchsuchen
Ansicht
Themen-Optionen

Objektliste sortieren und anschliessend anpassen

Ein Thema von saltjohn2 · begonnen am 2. Mär 2009 · letzter Beitrag vom 3. Mär 2009
Antwort Antwort
saltjohn2

Registriert seit: 27. Jan 2009
5 Beiträge
 
#1

Objektliste sortieren und anschliessend anpassen

  Alt 2. Mär 2009, 16:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Objektliste sortieren und anschliessend anpassen

  Alt 2. Mär 2009, 17:03
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.
$2B or not $2B
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Objektliste sortieren und anschliessend anpassen

  Alt 2. Mär 2009, 18:22
Zitat von saltjohn2:
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.
Für mich hört sich das völlig unlogisch an.
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:
'A380', 8:20:15, 1
'A380', 8:21:45, 2
'B52', 9:12:00, 1
Nach dem Einfügen:
Code:
'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
Noch ist die Liste unsortiert, aber man kann leicht nach ID und Position sortieren.
Andreas
  Mit Zitat antworten Zitat
SaltJohn

Registriert seit: 9. Jun 2008
43 Beiträge
 
#4

Re: Objektliste sortieren und anschliessend anpassen

  Alt 2. Mär 2009, 18:46
@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.
  Mit Zitat antworten Zitat
saltjohn2

Registriert seit: 27. Jan 2009
5 Beiträge
 
#5

Re: Objektliste sortieren und anschliessend anpassen

  Alt 3. Mär 2009, 09:10
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
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#6

Re: Objektliste sortieren und anschliessend anpassen

  Alt 3. Mär 2009, 10:56
Der Ablauf sollte nach deiner Beschreibung und den Beispieldaten im Prinzip so aussehen:
Code:
- 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
Ob das Gesamtkonzept sinnvoll ist, bezweifle ich.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz