Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TList und Datumsortieren
Jakane - Di 17.05.11 09:21
Titel: TList und Datumsortieren
Ich habe eine Liste mit Datumsangaben.
Ich habe zwar jedes Datum wie gewünscht nur einmal, aber er sortiert mir Datum wie ein String und nicht wie ein Date :cry:
Aber eine Auswahl die von 01.01.09 auf 01.01.10 springt statt auf 02.01.09 ist blödsinn :(
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| lbSortierliste.Items.Clear; For i:= 0 to cbMischen.Items.Count - 1 do Begin Sx:= cbMischen.Items.Strings[i]; if Trim(Sx) <> '' then lbSortierliste.Items.Add(Sx); end; _DuplicateClear.Click; lbDatum.Items.AddStrings(lbSortierliste.Items); lbDatum.ItemIndex:= 0; txtDatum.Text:= lbDatum.Items.Strings[0]; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TfmFehlerteufel._DuplicateClearClick(Sender: TObject); var Sortierliste : TStringList; begin Sortierliste:= TStringList.Create; Sortierliste.Sorted:= True; Sortierliste.Duplicates:= DupIgnore; Sortierliste.AddStrings(lbSortierliste.Items); lbSortierliste.Items.Clear; lbSortierliste.Items.AddStrings(Sortierliste); Sortierliste.Free; end; |
Weiss jemand Rat?
Moderiert von
Narses: Code- durch Delphi-Tags ersetztModeriert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 17.05.2011 um 12:27
Jakane - Di 17.05.11 12:34
Horst_H hat folgendes geschrieben : |
Hallo,
Kleiner Hinweis. customsort muss immer selbst aufgerufen werden.
Sorted auf true liefert dir nur Dein bisheriges Ergebnis.
Gruß Horst |
versteh ich nicht, ist da was falsch?
Und der Link ist zwar richtig... aber wie ich das bei mir einbauen soll versteh ich nicht :(
Horst_H - Di 17.05.11 12:53
Hallo,
in etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| function CompareDates(List: TStringList; Index1, Index2: Integer): Integer; var d1, d2: TDateTime; begin d1 := StrToDate(List[Index1]); d2 := StrToDate(List[Index2]); if d1 < d2 then Result := -1 else if d1 > d2 then Result := 1 else Result := 0; end;
procedure TfmFehlerteufel._DuplicateClearClick(Sender: TObject); var Sortierliste : TStringList; begin Sortierliste:= TStringList.Create; Sortierliste.Sorted:= True; Sortierliste.Duplicates:= DupIgnore; Sortierliste.AddStrings(lbSortierliste.Items); Sortierliste.Sorted:= false; Sortierliste.CustomSort(CompareDates); lbSortierliste.Items.Clear; lbSortierliste.Items.AddStrings(Sortierliste); Sortierliste.Free; end; |
Gruß Horst
Jakane - Mi 18.05.11 11:17
Danke :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!