Autor Beitrag
Jakane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Di 17.05.11 09:21 
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 :(

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  lbSortierliste.Items.Clear;
  For i:= 0 to cbMischen.Items.Count - 1 do  //unterschiedliche Datumsangaben
  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];

ausblenden 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 user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 17.05.2011 um 12:27
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 17.05.11 10:24 
Hallo,

etwas in der Richtung?
www.swissdelphicente...showcode.php?id=1664
Kleiner Hinweis. customsort muss immer selbst aufgerufen werden.
Sorted auf true liefert dir nur Dein bisheriges Ergebnis.

Gruß Horst
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Di 17.05.11 12:34 
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 17.05.11 12:53 
Hallo,

in etwa so:

ausblenden 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;
  // sortiert sollten Dupletten schneller zu finden und entfernen sein
  Sortierliste.Sorted:= True; 
  Sortierliste.Duplicates:= DupIgnore;
  Sortierliste.AddStrings(lbSortierliste.Items);
  // ICh weisz jetzt nicht, sorted= true nicht Customsort direkt wieder zunichte macht
  Sortierliste.Sorted:= false;
  Sortierliste.CustomSort(CompareDates);
 
  lbSortierliste.Items.Clear;
  lbSortierliste.Items.AddStrings(Sortierliste);
  Sortierliste.Free;
end;


Gruß Horst

Für diesen Beitrag haben gedankt: Jakane
Jakane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 257



BeitragVerfasst: Mi 18.05.11 11:17 
Danke :)