Sortieralgorithmus den Windowsexplorer nutzt



  • Hallo,

    mein selbstgebastelter FilePicker soll genau die gleichen Ausgaben machen wie der WindowsExplorer.
    Wie funktioniert der Algorithmus von Windows.

    in der Doskonsole ist die Datei __.txt (Zwei Unterstriche) vor _2.txt,
    im Explorer ist _2.txt vor __.txt.

    Mein Baum muss sich so aufbauen wie der Windowsexplorer, ich sehe bisher
    nur die Möglichkeit Dateien mit allen Zeichen zu erzeugen,
    selbst zu vergleichen, den einzelnen Zeichen eine Prio zuzuordnen und dann nach Prios zu sortieren.
    Das kann doch nicht die beste Lösung sein, wer kann helfen ?



  • [edit] Quatsch



  • Also:

    Unix / Linux / Apple / Win98/ME -> Alfabetische Sortierung
    Win2000/XP/Longhorn -> Logische Sortierung

    Ich wuerde einen priority_queue nehmen.

    Gg



  • ich brauche jedoch einen der die Standardreihenfolge ändert, sonst sind ja nichteinmal a und A zusammen ...



  • Du mußt dir deinen eigenen <Operator implementieren. Der defaultmäßige machts nur logisch.



  • Rufus schrieb:

    mein selbstgebastelter FilePicker soll genau die gleichen Ausgaben machen wie der WindowsExplorer.

    Dann verwende doch am Besten die gleiche Funktion. Der Windows-Explorer benutzt StrCmpLogicalW für die Sortierung und sorgt somit dafür, dass z.B. Ziffern als solche behandelt werden und nicht als Text (so wie es die normale lexicographische Sortierung machen würde).



  • xGhost schrieb:

    Also:
    Unix / Linux / Apple / Win98/ME -> Alfabetische Sortierung
    Win2000/XP/Longhorn -> Logische Sortierung

    "Eigentlich" shit. sorry.

    Also:

    Posix*, fat16/32..        Alphabetische sortierung
    NTFS, WinFS              Logische sortierung
    
    * HFS, UFS, FFS, (Ext*fs)
    

    So sollte es stimmen.
    Unter XP kann man aber die Logische sortierung auf Alphabetisch aendern.
    Dazu muss man nur ein regi eintrag etwas aendern.

    Gg



  • StrCmpLogicalW

    ist leider in meiner Headerdatei nicht vorhanden, gibt es alternativen ?
    Oder kann ich die Header/Lib irgendwo runterladen und ohne Risiko einfach austauschen ?


Anmelden zum Antworten