Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   StringList Sortieren? (https://www.delphipraxis.net/155287-stringlist-sortieren.html)

Bernd29bln 16. Okt 2010 12:59

StringList Sortieren?
 
Hallo,

Ich möchte eine Stringlist Sortieren.

Meine Stringlist sieht so aus.(Delimiter := ; )

1;3.00;4;1.13;0.75;50.00;9.43
2;1.10;5;1.05;0.22;52.00;9.80

Am Anfang steht die Zeilen Zahl.
Das sortieren soll sich der größe nach an der vorletzen Position in der Zeile richten.

hat Jemand eine Idee.

Gruß Bernd

Sir Rufo 16. Okt 2010 13:03

AW: StringList Sortieren?
 
Du hast eine CSV Datei in einer Stringlist und möchtest diese CSV Datei sortieren.

Eine StringList als Container ist dafür mehr als ungeeignet.
(es ginge schon, ist aber mehr durch die Brust ins Auge)

Wo kommen die Daten her und was soll mit den Daten weiter geschehen?

Ich Wette, da gibt es einen besseren Grundansatz.

Bernd29bln 16. Okt 2010 13:14

AW: StringList Sortieren?
 
Hallo Sir Rufo,

Es handelt sich um einstellungs Daten die voher generiert werden.
Es soll nach der best möglichen einstellung sortiert werden.


Gruß bernd

Sir Rufo 16. Okt 2010 13:21

AW: StringList Sortieren?
 
Ei jo ... aber so wie die Daten da jetzt stehen, kann man da nicht so gemütlich drauf zugreifen, oder?

Werden diese Daten durch das gleiche Programm erstellt, mit dem du jetzt sortieren möchtest?
-> warum befinden sich diese Daten nicht in einer Klasse (pro Zeile) und alle (Zeile) dann in einer TObjectList?
Der TObjectList gibt man jetzt einen Comparer und die wird automatisch sortiert.

Oder kommen die Daten von einem externen Programm?

Bernd29bln 16. Okt 2010 13:28

AW: StringList Sortieren?
 
Jepp leider kommen die Daten von einem externen Programm.

dann wäre es ja einfach gewesen :-D

Irgendwie muss das gehen.

Gruß Bernd

himitsu 16. Okt 2010 13:32

AW: StringList Sortieren?
 
Du benutzt die Methode
Delphi-Quellcode:
CustomSort(Compare: TStringListSortCompare);
deiner TStringList.
- in deiner selbstgeschriebenen Compare-Function bekommst du 2 Zeilen-Indize
- holst dir aus der übergebenen StringList die entsprechenden Zeilen
- zerlegst diese, bzw. extrahierst den zu vergleichenden Anteil
- wandelst diese Anteil ("Zahlen") jeweils in einen Read/Single/Double um,
da du ja bestimmt die nummerischen Werte vergleichen willst
- vergleichst diese Werte und gibst das Ergebnis als Result zurück
- das Sortieren übernimmt dann CustomSort für dich

Du kannst dir auch eine eigene Klasse von TStringList ableiten, überschreibst darin die Methode "Sort", implementierst in dieser die ganzen Vergleiche und rufst dann einfach nur noch das .Sort auf.

Sir Rufo 16. Okt 2010 13:38

AW: StringList Sortieren?
 
Ja, natürlich geht das, aber ich versuche gerade dir mühsam aus der Nase zu ziehen, wie diese Daten denn jetzt da vorliegen.

Ich vermute jetzt mal (konkret hast du dich noch nicht geäußert) da ist eine Datei wo das Gelumpe drin steht.

Dann schau mal da

Da kann man beim Einlesen gleich sortieren lassen, und auf jeden Wert gemütlich zugreifen.

Es kommt jetzt darauf an, was man mit dem Zeuges noch anfangen will

Bernd29bln 16. Okt 2010 13:46

AW: StringList Sortieren?
 
Hi Sir Rufo,

Es soll ja nix dolles passieren die Daten soll nur sortiert in die Datei zurück kopiert werden.

Das war es schon.

Aber wie gesagt ich komme nicht weiter.

Danke @himitsu aber mit CustomSort hatte ich noch nicht das vergnügen. Kannst du das näher beschreiben?

Gruß Bernd

sx2008 16. Okt 2010 13:46

AW: StringList Sortieren?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1056079)
aber ich versuche gerade dir mühsam aus der Nase zu ziehen, wie diese Daten denn jetzt da vorliegen.

Bin da genau deiner Meinung - es kommt doch darauf an, was diese Zahlen bedeuten.
(Temperaturen, Spannungswerte, Aktienkurse, ???)
Die Daten sind in einer ungeeigneten Darstellung; man sollte sie erst mal so umformen,
dass klar hervorgeht um was es sich handelt.
Man kann natürlich die Stringliste so wie sie ist sortieren
aber dann entsteht dieser völlig unverständliche Sourcecode den wir als
Programmierer so hassen.

DeddyH 16. Okt 2010 13:53

AW: StringList Sortieren?
 
Zitat:

Zitat von Bernd29bln (Beitrag 1056081)
Es soll ja nix dolles passieren die Daten soll nur sortiert in die Datei zurück kopiert werden.

Es muss nicht so sein, aber hier liegt der Verdacht nahe, dass das Pferd von hinten aufgezäumt werden soll. Sortierung ist ja eigentlich eine Sache der Darstellung und nicht des Datenbestandes.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.
Seite 1 von 2  1 2      

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