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.