Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Kommazahlen (Float) Sortieren


Bronstein - Mi 22.08.07 15:26
Titel: Kommazahlen (Float) Sortieren
Wie kann ich Kommazahlen sortieren.

Datum sortiere ich so:
Compare := Trunc(StrToDateTime(TextToSort1)-StrToDateTime(TextToSort2))+1; //Datum

Integer so:
Compare := StrToInt(TextToSort1)-StrToInt(TextToSort2); //Zahl

Strings so:
Compare := CompareText(TextToSort1, TextToSort2); //Text

Kommazahlen so:
Compare := Trunc(StrToFloat(TextToSort1)-StrToFloat(TextToSort2))-1;

Bei den Kommazahlen funktioniert das aber nicht, da ich ja die Zahlen runde. Es soll aber genau sortiert werden, sprich mit Dezimalstellen. Wie mach ich das??


Narses - Mi 22.08.07 16:39

Moin!

Dafür gibt es doch schon fertige Funktionen in der Unit Math: :idea: ;)
DOH hat folgendes geschrieben:
Unit: Math

Kategorie: Vergleich

Delphi-Syntax:

Delphi-Quelltext
1:
2:
3:
4:
5:
function CompareValue(const A, B: Integer): TValueRelationship; overload;
function CompareValue(const A, B: Int64): TValueRelationship; overload;
function CompareValue(const A, B: Single; Epsilon: Single = 0): TValueRelationship; overload;
function CompareValue(const A, B: Double; Epsilon: Double = 0): TValueRelationship; overload;
function CompareValue(const A, B: Extended; Epsilon: Extended = 0): TValueRelationship; overload;


Beschreibung

Mit CompareValue können Sie das Verhältnis zwischen zwei numerischen Werten bestimmen. Beim Vergleich von Gleitkommawerten können Sie eine maximale Differenz angeben, sodass Werte, die innerhalb dieser Differenz liegen, als gleich betrachtet werden.

A und B sind die zu vergleichenden Werte.

Epsilon ist die maximale Differenz, mit der A und B noch als gleich angesehen werden.

CompareValue gibt folgende Werte zurück:

LessThanValue, wenn A kleiner als B ist (um mehr als Epsilon, wenn A und B Gleitkommazahlen sind).
EqualsValue, wenn A gleich B ist (identisch oder innerhalb von Epsilon, wenn A und B Gleitkommazahlen sind).
GreaterThanValue, wenn A größer als B ist (um mehr als Epsilon, wenn A und B Gleitkommazahlen sind).
cu
Narses


Bronstein - Mi 22.08.07 18:36

Danke.
Jetzt ist mir gerade aufgefallen, dass das mit dem Datum Zeit sortieren nicht funktioniert. Hast du da vielleicht auch einen Tipp für mich


Philipp_Reitter - Mi 22.08.07 19:22

was meinst du genau mit kommazahlen sortieren?


Narses - Mi 22.08.07 22:08

Moin!

user profile iconBronstein hat folgendes geschrieben:
Danke.

Bitte. ;)

user profile iconBronstein hat folgendes geschrieben:
Jetzt ist mir gerade aufgefallen, dass das mit dem Datum Zeit sortieren nicht funktioniert. Hast du da vielleicht auch einen Tipp für mich

Klar, aber hast du keine Delphi-Online-Hilfe? :gruebel:

OK, zum Tipp: 8)Na, da bin ich aber mal gespannt, ob du das Rätsel knackst... :P :roll:

cu
Narses


Bronstein - Mi 22.08.07 22:14

Super, nochmals Danke.
Für alle die Funktion heißt:
CompareDateTime