AGB  ·  Datenschutz  ·  Impressum  







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

Customsort - sortieren nach datum

Ein Thema von Susanne · begonnen am 10. Nov 2006 · letzter Beitrag vom 25. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Customsort - sortieren nach datum

  Alt 10. Nov 2006, 09:43
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.
Susanne
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 09:46
Sieht eigentlich OK aus, probiere aber mal "Liste.CustomSort(@CompareDate);".
So hätte ich es geschrieben.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 09:50
auch nicht
Susanne
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 09:54
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; !!
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 09:55
Hallo,

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

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 09:59
in der Stringliste stehe die Dateiname inklusiver ihres Pfades - also C:\ordner\test1.tif.
Susanne
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 10:12
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 von oki:
P.S. hinder Functionsdeklaration stcll; !!
Nein, TStringListSortCompare ist nicht als stdcall deklariert. Somit wird die normale Delphi Calling convention erwartet. (register)
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 10:14
Hallo Susanne,

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

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 10:17
Hallo,

Beitrag hat sich erledigt, da Hawkeye die Lösung gepostet hat.
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Customsort - sortieren nach datum

  Alt 10. Nov 2006, 10:23
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.
Susanne
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:29 Uhr.
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