Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Customsort - sortieren nach datum (https://www.delphipraxis.net/80524-customsort-sortieren-nach-datum.html)

Susanne 10. Nov 2006 09:43


Customsort - sortieren nach datum
 
ich habe eine Stringliste, in der verschiedene dateinamen stehen, die ich mit Findfirst und Findnext eingelesen habe.

Nun möchte ich die Dateien in dieser Stringliste nach ihrem Erstellungsdatum sortieren und da scheitere ich ein wenig.

Aufruf der Funktion sieht so aus:
Delphi-Quellcode:
for k:= 0 to liste.Count-1 do
    ShowMEssage('vor sortierung: '+liste[k]);

Liste.CustomSort(CompareDate);

for k:= 0 to liste.Count-1 do
    ShowMEssage('nach sortierung: '+liste[k]);
Die Funktion selber so:
Delphi-Quellcode:

function CompareDate(List: TStringList; Index1, Index2: Integer): Integer;
var
  Val1, Val2: TDateTime;
begin


  val1:= FileDateToDateTime(FileAge(list[Index1]));
  val2:= FileDateToDateTime(FileAge(list[Index2]));
  Result := CompareDateTime(Val1, Val2);
end;
Das Problem ist nun aber, er geht gar nicht in die Funktion rein. Irgendjemand eine Idee warum nicht.

Elvis 10. Nov 2006 09:46

Re: Customsort - sortieren nach datum
 
Sieht eigentlich OK aus, probiere aber mal "Liste.CustomSort(@CompareDate);".
So hätte ich es geschrieben.

Susanne 10. Nov 2006 09:50

Re: Customsort - sortieren nach datum
 
auch nicht

oki 10. Nov 2006 09:54

Re: Customsort - sortieren nach datum
 
Hi,

in der OH steht:
Zitat:

Hinweis

Die Methode CustomSort muß explizit aufgerufen werden. Wenn nur die Eigenschaft Sorted gesetzt wird, werden die Strings nach der ANSI-Reihenfolge sortiert (gemäß der Implementierung in der Methode Sort).
Ich denke, dass somit die Sortierung nicht automatisch erfolgt, sondern du auf Veränderungen in deinen Einträgen mit einem nachträglichen expliziten Aufruf der Function reagieren must.

Gruß oki

P.S. hinder Functionsdeklaration stcll; !!

Gollum 10. Nov 2006 09:55

Re: Customsort - sortieren nach datum
 
Hallo,

Du schreibst von Dateinamen, die in der Liste stehen und willst das Dateidatum sortieren!? Wie sind die Daten in der Liste gespeichert?

Susanne 10. Nov 2006 09:59

Re: Customsort - sortieren nach datum
 
in der Stringliste stehe die Dateiname inklusiver ihres Pfades - also C:\ordner\test1.tif.

Elvis 10. Nov 2006 10:12

Re: Customsort - sortieren nach datum
 
Zitat:

Zitat von Susanne
auch nicht

Bei mir gates schon, auch ohne "@". ;)
Delphi-Quellcode:
{$APPTYPE CONSOLE}

uses
  SysUtils,
  Classes,
  DateUtils;

function CompareDate(List: TStringList; Index1, Index2: Integer): Integer;
var
  Val1, Val2: TDateTime;
begin
  val1:= FileDateToDateTime(FileAge(list[Index1]));
  val2:= FileDateToDateTime(FileAge(list[Index2]));
  Result := CompareDateTime(Val1, Val2);
end;

var
  sl : TStringList;
  i : Integer;
begin
  sl := TStringList.Create();

  sl.Add('New Text Document (3).txt');
  sl.Add('New Text Document (2).txt');
  sl.Add('New Text Document.txt');

  sl.CustomSort(CompareDate);

  for i := 0 to sl.Count - 1 do
  begin
    Writeln(sl[i]);
  end;
end.

Zitat:

Zitat von oki
P.S. hinder Functionsdeklaration stcll; !!

Nein, TStringListSortCompare ist nicht als stdcall deklariert. Somit wird die normale Delphi Calling convention erwartet. (register)

Hawkeye219 10. Nov 2006 10:14

Re: Customsort - sortieren nach datum
 
Hallo Susanne,

um CustomSort nutzen zu können, muß die Eigenschaft .Sorted der Stringliste auf den Wert False gesetzt werden.

Gruß Hawkeye

Gollum 10. Nov 2006 10:17

Re: Customsort - sortieren nach datum
 
Hallo,

Beitrag hat sich erledigt, da Hawkeye die Lösung gepostet hat.

Susanne 10. Nov 2006 10:23

Re: Customsort - sortieren nach datum
 
Zitat:

um CustomSort nutzen zu können, muß die Eigenschaft .Sorted der Stringliste auf den Wert False gesetzt werden
danke, das wars, dann geht er auch sofort in die Funktion rein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz