AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox nach Datum sortieren

Ein Thema von Codix32 · begonnen am 29. Mai 2009 · letzter Beitrag vom 4. Jul 2009
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Re: Listbox nach Datum sortieren

  Alt 28. Jun 2009, 14:39
Was ist aber mit all den ganzen Beispielen hier? Doch nichts?

Noch ein mal, auch wenn alle hier mit Beispielen kommen wie man ein StringList sortiert, in deinem Fall ist es Quatsch. So kann man Namen sortieren, aber nicht Daten. Natürlich kann man die Schreibweise der Daten dem Problem anpassen, aber das sollte man nicht. Füge der StringList Objekte mit Klar-Daten und sortiere diese anhand dieser Daten. Dann kannst du in dein StringList schreiben was du willst und wie du es willst.

Hier noch mal die komplette Sortierfunktion zu meinem Beispiel oben. Ich hab Luckies Sortierfunktion etwas angepaßt, sortiere aber nach Daten aus den Objekten. Die Strings der Items interessieren mich dabei nicht:

Delphi-Quellcode:
procedure LBSortieren(LB: TListBox);
var
  Data1, Data2, DataTemp: TData;
  Str1, Str2, StrTemp: String;
  i, j: Integer;
begin
  LB.Items.BeginUpdate;

  for i := LB.Items.Count - 1 downto 1 do
  begin
    for j := 1 to i do
    begin
      Data1 := TData(LB.Items.Objects[j-1]);
      Data2 := TData(LB.Items.Objects[j]);

      if Data1.Datum > Data2.Datum then
      begin
        StrTemp := LB.Items[j];
        DataTemp := TData(LB.Items.Objects[j]);

        LB.Items[j] := LB.Items[j-1];
        LB.Items.Objects[j] := LB.Items.Objects[j-1];

        LB.Items[j-1] := StrTemp;
        LB.Items.Objects[j-1] := DataTemp;
      end;
    end;
  end;

  LB.Items.EndUpdate;
end;
Sieht ähnlich aus wie eine normale Sortierung, hier werden aber die Daten aus dem Objekt verglichen.

Hier ein Beispile mit dem du es testen kannst. Prozedur 1 erzeugt 400 Einträge mit Daten und Texten, Prozedur 2 sortiert sie:

Delphi-Quellcode:
//Zufallsdaten generieren
procedure TForm1.Button1Click(Sender: TObject);

  function ZufallsDatum: TDateTime;
  begin
    Result := EncodeDateTime(Random(109) + 1900, Random(12) + 1, Random(28) + 1,
      Random(23) + 1, Random(59) + 1, Random(59) + 1, Random(100) + 1);
  end;

const
  x = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed di';
var
  i: Integer;
  DT: TDateTime;
  ZT: String;
begin
  for i := 0 to 400 - 1 do
  begin
    DT := ZufallsDatum;
    ZT := Copy(x, Random(40) + 1, Random(20) + 4); //ZufallsText
    LBItemHinzufuegen(ListBox1, DT, DateTimeToStr(DT) + ' ' + ZT);

    //hier eine etwas verschärfte Version
    //LBItemHinzufuegen(ListBox1, DT, ZT + ' ' + DateTimeToStr(DT));
  end;
end;

//Alles sortieren
procedure TForm1.Button2Click(Sender: TObject);
begin
  LBSortieren(ListBox1);
end;
Angehängte Dateien
Dateityp: zip pak_107.zip (3,4 KB, 11x aufgerufen)
  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 01:04 Uhr.
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-2025 by Thomas Breitkreuz