Thema: Delphi Datumliste

Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datumliste

  Alt 25. Jan 2006, 20:58
Ich habe nach einer Datumliste gesucht, aber keine gefunden. Also habe ich selber eine geschrieben (s.u.). Wer kann mir Tipps zur Optimierung geben, insbesondere was das Freigeben des Speichers betrifft?

Delphi-Quellcode:
type
  TDatumObj = class
    Datum: TDate;
    Name: string;
    Kommentar: string;
  end;
  TListSortCompare = function (Datum1, Datum2: Pointer): Integer;

var
  DatumListe: TList;

function DatumVergleichen(Datum1, Datum2: Pointer): Integer;
begin
  if TDatumObj(Datum1).Datum > TDatumObj(Datum2).Datum then
    Result := 1
  else if TDatumObj(Datum1).Datum < TDatumObj(Datum2).Datum then
    Result := -1
  else
    Result := 0;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  NeuesDatum: TDatumObj;
  TageDanach, i: integer;
begin
  Randomize;
  for i := 1 to 10 do
  begin
    NeuesDatum := TDatumObj.Create;
    TageDanach := Random(100);
    NeuesDatum.Datum := IncDay(Today, TageDanach);
    NeuesDatum.Name := IntToStr(TageDanach) + ' Tage danach';
    NeuesDatum.Kommentar := ' (Kein Kommentar!)';
    DatumListe.Add(NeuesDatum);
  end;
  DatumListe.Sort(@DatumVergleichen) ;
  ListBox1.Items.Clear;
  for i := 0 to DatumListe.Count - 1 do
  begin
    ListBox1.Items.Add(DateToStr(TDatumObj(DatumListe[i]).Datum) + ': ' +
                       TDatumObj(DatumListe[i]).Name +
                       TDatumObj(DatumListe[i]).Kommentar);
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: integer;
begin
  for i := 0 to DatumListe.Count - 1 do
    TDatumObj(DatumListe[i]).Free;
  DatumListe.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DatumListe := TList.Create;
end;
Die Projektdateien sind als Anhang beigefügt.
Angehängte Dateien
Dateityp: zip datumliste_172.zip (1,5 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat