Forum: PC-Programmierung Wie sortiert Windows Dateinamen?


von SiMa (Gast)


Lesenswert?

Hallo,

ich möchte in einem Programm eine Liste aller Dateien eines Ordners 
anzeigen. Natürlich alphabetisch sortiert. Jetzt sortiert Windows aber 
auf eine seltsame Weise. Kann mir jemand einen Link geben, wo ich genau 
alle Sortierregeln finden kann, die Windows XP zum sortieren der 
Dateinamen verwendet?

Vielen Dank!

von Benedikt K. (benedikt)


Lesenswert?

Hängt von der Windows Version ab. Man kann es glaube ich sogar umstellen 
ob z.B. Zahlen als
1
2
3
4
10
11
20
30
usw.

oder als
1
10
11
2
20
3
30
4
usw.

sortiert werden. Beide Varianten habe ich bei WinXP schon gesehen.

von Sven P. (Gast)


Lesenswert?

Welchesprogrammwelcheswindoofwelcheprogrammiersprache?

<°(((((><

von SiMa (Gast)


Lesenswert?

@Benedikt
Ich weiß, man kann das umstellen, aber ich will ja gerade, dass der 
Benutzer nichts umstellen muss und in meinem programm die Liste der 
dateinamen so sieht, wie sie z.B. im Windows-Explorer angezeigt werden.

@Sven
Na, was soll das? Hab ich doch geschrieben! Es geht um Windows XP..klar 
genug oder willst Du noch eine Versionsnummer? Programmiersprache ist 
doch egal, wenn ich nach den Sortierregeln frage. Oder meinst Du, 
windows hat für jede Programmiersprache eine andere Regel um zum 
gleichen Ergebnis zu kommen? Und welches Programm? Na, für meins. Oder 
willst Du wissen, wo man in Windows die Verzeichnisse üblicherweise 
ansieht? Na im Windows-Explorer!
Oh Herr...

von SiMa (Gast)


Lesenswert?

@Benedikt
Windows-XP sortiert Dateinamen abhängig vom Zahlenwert. Das habe ich 
inzwischen auch im Griff. Aber wieso wird so sortiert:

ABA
-ABA
A-BA
-A-BA
ABA-

Da komm ich nicht ganz mit...

von Sven P. (Gast)


Lesenswert?

SiMa wrote:
> @Sven
> Na, was soll das? Hab ich doch geschrieben! Es geht um Windows XP..klar
> genug oder willst Du noch eine Versionsnummer?
Schön, dann schmeiß ich mal die Kristallkugel an. Les den Beitrag von 
Benedikt, vielleicht geht dir dann irgendwie ein Licht auf.

> Programmiersprache ist doch egal, wenn ich nach den Sortierregeln frage.
Wenn du das meinst, wird das wohl so sein.

> Oder meinst Du, windows hat für jede Programmiersprache eine andere Regel
> um zum gleichen Ergebnis zu kommen?
Windows sortiert garnix. Scheinbar hast du nicht kapiert, wo der 
Unterschied zwischen "Windows" und "Dateisystem" oder "Anzeige" besteht. 
Dem Windows ist es doch grad mal pupsegal, wie der Programmierer dem 
Anwender die Dateinamen präsentiert.

> Und welches Programm? Na, für meins.
Wie aussagekräftig.

> Oder willst Du wissen, wo man in Windows die Verzeichnisse üblicherweise
> ansieht?
Du bist ein Supertyp, man! Und was hat das dann mit "deinem" Programm zu 
tun?

> Na im Windows-Explorer!
Wenn du meinst. Dann klick doch auf die Spaltentitel in der 
detaillierten Ansicht und setz dich mal mit "alphabetischer" und 
"natürlicher" Sortierung auseinander.

> Oh Herr...
Sag mal gehts noch? Stell konkrete Fragen, dann kriegste konkrete 
Anworten.

von Benedikt K. (benedikt)


Lesenswert?

Interessant. Das mit dem - kannte ich noch nicht.
Es scheint so, als ob Windows das - Zeichen erstmal ignoriert, und nur 
dann berücksichtigt, wenn ansonsten ähnliche Zeichenketten vorkommen.
Ansonsten muss ich leider passen, ich sortiere die Namen immer 
alphabetisch, das reicht mir.

von Sven P. (Gast)


Lesenswert?

Man könnte, aber nur wenn der 13 des Monats auf einen Freitag bei 
Vollmond fällt und die Eule dreimal schreit, nur dann könnte man auch 
bei Microsoft direkt suchen.

http://search.msdn.microsoft.com/Default.aspx?brand=Msdn&refinement=&locale=en-us&lang=en-us&query=Sorting%20filename

von SiMa (Gast)


Lesenswert?

@Sven
Interessiert mich nicht, dass Du nicht in der Lage bist, mitzudenken. 
Behalt Dein Supergesülze bitte für Dich!

von Sven P. (Gast)


Lesenswert?

SiMa wrote:
> @Sven
> Interessiert mich nicht, dass Du nicht in der Lage bist, mitzudenken.
> Behalt Dein Supergesülze bitte für Dich!

Jetzt reichts aber.

SiMa wrote:
>ich möchte in einem Programm eine Liste aller Dateien eines Ordners
>anzeigen.
Ja, in welchem Programm denn?

>Natürlich alphabetisch sortiert.
Alphabetisch und natürlich oder nur alphabetisch?

>Jetzt sortiert Windows aber auf eine seltsame Weise.
Ja, das kann sein. Aber Windows sortiert garnicht, sondern das tut z.B. 
die Komponente ("Steuerelement", "Control"), welches sich die Liste 
ungeordnet vom System besorgt und dann anzeigt.

>Kann mir jemand einen Link geben, wo ich genau alle Sortierregeln finden kann,
http://msdn.com

>die Windows XP zum sortieren der Dateinamen verwendet?
S.o. Welches XP? Welche Konfiguration? Sprache? Regionalzeug?

Wenn dir die 41000 Treffer bei MSDN nicht langen, kauf dir lieber so ein 
"Windows für Dummies"-Buch oder LMAA.

von SiMa (Gast)


Lesenswert?

Er kanns nicht lassen....kopfschüttel...
Müssen eigentlich in jedem Forum solche Erbsenzähler rumspringen, die 
alles sinnlos runterziehen und von der eigentlichen Frage ablenken?

von Sven P. (Gast)


Lesenswert?

SiMa wrote:
> Er kanns nicht lassen....kopfschüttel...
> Müssen eigentlich in jedem Forum solche Erbsenzähler rumspringen, die
> alles sinnlos runterziehen und von der eigentlichen Frage ablenken?

Jetzt ists aber wirklich genug! Was willst du denn wissen? Du hast nach 
einem Link gesucht, näher als über MSDN kommstu nicht an den Hersteller 
ran.

Windows sortiert immer noch keine Dateinamen selbst, hat sich in den 
letzten 5 Minuten nix dran geändert. Das NTFS hat noch son paar 
Sortiertricks auf Lager, vielleicht meinste das ja.

In den ganzen Teilen von Windows sind zig verschiedene Sortiermethoden 
verbaut, darum müsste man wissen, WO du die Dateien anzeigen lassen 
möchtest. Ist das zuviel verlangt?

von SiMa (Gast)


Lesenswert?

Kannst Du lesen? Vielen Dank für Deine Ratschläge...und tschüß

von Sven P. (Gast)


Lesenswert?

Schluss. Such dir deinen Mist doch selber zusammen.

von SiMa (Gast)


Lesenswert?

Na endlich...jetzt hat er es kappiert...Danke für Deine Hilfe

von Frank L. (franklink)


Lesenswert?

Hallo,
ich nehme an, Du suchst die Dateien in dem Verzeichnis mit FindFirst und 
FindNext, in diesem Fall könnte man fast sagen, ist das Ergebnis 
willkürlich.

Persönlich würde ich sagen es ist die Reihenfolge, mit der die Dateien 
angelegt wurden bzw. im Directorytabellen durch Windows eingetragen 
wurden.

Um das Ergebnis also sortiert angezeigt bekommen willst, musst Du Dir 
Deine eigenen Sortierroutinen schreiben. Die kannst Du Deinen 
Bedürfnissen anpassen. Also auch genauso durchführen lassen wie es 
Windows macht.

Wo allerdings geschrieben steht, wie genau diese Sortierfolge ist, wirst 
Du tatsächlich in MSN nachsehen müssen. Bei der Anzahl von Treffer, habe 
ich leider keine Zeit Dir die korrekte Seite herauszusuchen.

Gruß
Frank

von SiMa (Gast)


Lesenswert?

@Frank
Genau da liegt mein Problem. Ich kann keine Regeln finden, wie in 
Windows die Dateinamen standardmäßig sortiert werden. Überall finde ich 
Hinweise, dass Ziffern über den Zahlenwert sortiert werden, aber nicht, 
wieso das von mir oben Gelistete so sortiert wird.
Die 41000 genannten Treffer sind so sinnvoll, als hätte ich nach dem 
Buchstaben "A" gesucht. Da auch ich nicht 41000 Seiten durchstöbern 
kann, dachte ich, in einem Forum könnte einer ja vielleicht was 
genaueres zu meiner Frage wissen und mir helfen.

von Ralf - rainer P. (ralf-rainer)


Lesenswert?

Hallo,

es ist schon erstaunlich, wie SiMa mit Hilfswilligen umgeht.

Aber in einer Art hat er recht, es ist egal, welches BS und welche 
Programmiersprache man verwendet.

Wenn ich ein Programm schreibe, lege ich durch die Programmierung die 
Sortierung fest.

Das hat der Programmierer des Datei-Explorers auch gemacht.

Und der Programmierer des FileList-Controls in Visual.Net hat es 
vielleicht
anders gemacht.

Wenn ich ein Dir. auslese, bekomme ich von Haus aus keine Sortierung, 
sondern muß mich selbst drum kümmern und habe dafür auch alle 
Freiheiten.

Gruß

von Sven P. (Gast)


Lesenswert?

Ralf-rainer Ploog wrote:
> Hallo,
>
> es ist schon erstaunlich, wie SiMa mit Hilfswilligen umgeht.
Eben.

> Aber in einer Art hat er recht, es ist egal, welches BS und welche
> Programmiersprache man verwendet.
Na, das sag ich doch die ganze Zeit schon. Aber wenn er damit nicht 
konkreter wird, kann man ihm wohl schlecht eine konkrete Antwort geben, 
oder?

> Wenn ich ein Programm schreibe, lege ich durch die Programmierung die
> Sortierung fest.
Meine Rede.

> Das hat der Programmierer des Datei-Explorers auch gemacht.

> Und der Programmierer des FileList-Controls in Visual.Net hat es
> vielleicht
> anders gemacht.

> Wenn ich ein Dir. auslese, bekomme ich von Haus aus keine Sortierung,
> sondern muß mich selbst drum kümmern und habe dafür auch alle
> Freiheiten.
Eben.

von SiMa (Gast)


Lesenswert?

Schaltet mal Euer Hirn ein: Wenn ich schreibe, dass ich die gleiche 
Sortierreihenfolge haben will, wie sie Windows-XP anzeigt, dann ist 
damit wohl klar gesagt, dass es scheißegal ist, in was ich das dann 
später programmiere. Gleich ist gleich!

Nur arrogante Schnösel sind der Meinung, dass der Programmierer 
bestimmt, was der Kunde bekommt und basta.

Und wenn ich sage, dass mir das Windows anzeigt, dann meine ich damit 
natürlich das "nackte" Windows und nicht irgendetwas in Visual-net oder 
so. Zuviel zum Mitdenken?

Und tickt es eigentlich noch richtig? Ich habe eine normale, freundliche 
Frage gestellt und dann gibts erstmal von diesem Sven eine ziemlich 
unfreundliche Gegenfrage und später dann den Hinweis "LMAA". Wer ist 
jetzt hier der Nette?

Selstsamerweise haben Benedikt und Frank sofort verstanden, um was es 
geht.


>Wenn ich ein Dir. auslese, bekomme ich von Haus aus keine Sortierung...
So ein Blödsinn. NTFS sortiert eben auch schon

Aber ich finds niedlich, wie dieser Sven es einfach nicht lassen kann, 
hier ständig nachzulesen und zu kommentieren. Brauchst Du Beschäftigung?

von René K. (king)


Lesenswert?

> Na, das sag ich doch die ganze Zeit schon.

Ja, und SiMa sagt das auch schon die ganze Zeit.

Ich verstehe die ganze Aufregung nicht. Die Frage war doch klar und 
deutlich formuliert: Im WindowsXP-UI kann man sich Inhalte von 
Directories sortiert anzeigen lassen. Die Frage ist jetzt, nach welchem 
Muster die Sortierung geschieht.

Für die Antwort benötigt man ganz sicher nicht die Angabe einer Sprache. 
Zudem müsst Ihr nicht wissen, wer wann was selber machen zu machen hat. 
Und Ihr müsst nicht wissen, woher SiMa die Daten hat. Wenn man nur 
wissen will, wie die Daten im Windows-UI sotiert werden, programmiert 
man nicht eine einzige Zeile und hat auch noch gar keine Daten 
gesammlet.

Ich kann überhaupt nicht verstehen, dass ausser Benedikt niemand die 
Problemstellung versteht. So schwierig ist das doch gar nicht. Da 
verstehe ich eher SiMas Reaktion auf das Herumgerede um den heißen Brei. 
Und so langsam geht mir auch mir die Hutschnur hoch.

Und nun will ich mich der Allgemeinheit anschliessen und ebenfalls 
nichts sachdienliches zum Thema beitragen. Die Antwort kenne ich nämlich 
leider auch nicht.

von Sven P. (Gast)


Lesenswert?

SiMa wrote:
> Schaltet mal Euer Hirn ein: Wenn ich schreibe, dass ich die gleiche
> Sortierreihenfolge haben will, wie sie Windows-XP anzeigt, dann ist
> damit wohl klar gesagt, dass es scheißegal ist, in was ich das dann
> später programmiere. Gleich ist gleich!
Jo, und ist alles auf MSDN.com dokumentiert. Musst halt suchen. Reicht 
dir das jetzt?

> Nur arrogante Schnösel sind der Meinung, dass der Programmierer
> bestimmt, was der Kunde bekommt und basta.
Ganz genau! Und wenn der Programmierer eine Funktion nicht einbaut 
kriegt der Kunde sie trotzdem, das machen dann kleine Mainzelmännchen.

> Und wenn ich sage, dass mir das Windows anzeigt, dann meine ich damit
> natürlich das "nackte" Windows und nicht irgendetwas in Visual-net oder
> so. Zuviel zum Mitdenken?
Das "nackte" Windows... MSDN.com

> Und tickt es eigentlich noch richtig? Ich habe eine normale, freundliche
> Frage gestellt und dann gibts erstmal von diesem Sven eine ziemlich
> unfreundliche Gegenfrage
Du, wenn dich das schon verletzt, tuts mir ja furchtbar Leid. Aber das 
ist so der gängige Standard-Konter auf wässrige Fragen.

> und später dann den Hinweis "LMAA". Wer ist jetzt hier der Nette?
Oh, verzeih.

> Selstsamerweise haben Benedikt und Frank sofort verstanden, um was es
> geht.
Hastus denn jetzt kapiert?

>>Wenn ich ein Dir. auslese, bekomme ich von Haus aus keine Sortierung...
> So ein Blödsinn. NTFS sortiert eben auch schon
Dann ist doch alles in Butter? Die Suchseite bei MSDN (mein Link) da 
steht schon auf der ersten Seite ein Verweis auf die Sortierung des 
NTFS.

> Aber ich finds niedlich, wie dieser Sven es einfach nicht lassen kann,
> hier ständig nachzulesen und zu kommentieren. Brauchst Du Beschäftigung?
Jubb, brauch ich.

Übrigens: Google, erste Seite "Windows Dateinamen Sortierung":
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.de.german.entwickler.dotnet.vb&tid=18930085-e2f1-46c4-b2e7-a96d53bcd915&cat=&lang=&cr=&sloc=&p=1

von Gast123 (Gast)


Lesenswert?

> Jo, und ist alles auf MSDN.com dokumentiert. Musst halt suchen. Reicht
> dir das jetzt?
Ja, das ist vermutlich genau DIE Antwort, die ihm reicht und die er 
(speziell von dir :-) sowieso hören wollte.
;-)

von SiMa (Gast)


Lesenswert?

@Sven
Gääähn...Hättest Du auch nur den Hauch einer Ahnung, wüsstest Du, dass 
die Sortierung von NTFS eben nicht mit der Sortierung vom 
Windows-Explorer übereinstimmt.

Und vielen Dank für den Link, den Google als erstes ausspuckt. Hast Du 
noch mehr so Unbrauchbares? Da steht nämlich rein gar nichts über oben 
geschildertes Problem drin. Aber dazu hättest Du das lesen und auch 
verstehen müssen...etwas viel für Heute vermutlich?!

Du beweist hier sehr deutlich, dass Du aber auch gar keine Ahnung hast.

von Sven P. (Gast)


Lesenswert?

SiMa wrote:
> @Sven
> Gääähn...Hättest Du auch nur den Hauch einer Ahnung, wüsstest Du, dass
> die Sortierung von NTFS eben nicht mit der Sortierung vom
> Windows-Explorer übereinstimmt.
Hab ich das behauptet? Nö.

> Und vielen Dank für den Link, den Google als erstes ausspuckt. Hast Du
> noch mehr so Unbrauchbares? Da steht nämlich rein gar nichts über oben
> geschildertes Problem drin. Aber dazu hättest Du das lesen und auch
> verstehen müssen...etwas viel für Heute vermutlich?!
Wenn die Links, die man so pi-mal-Daumen findet, ja alle so unbrauchbar 
sind, dann frag dich doch mal, woher sonstwer eine Antwort auf deine 
Frage haben soll.

> Du beweist hier sehr deutlich, dass Du aber auch gar keine Ahnung hast.
Hihi, von wem muss ich mir das eigentlich anhören? Ich beweise garnix, 
sowas brauch ich net für mein Ego... hab lediglich Spaß dabei, Trolle 
zufüttern (was ja eigentlich wiederum nicht so toll ist). Aber es is 
interessant, zu beobachten, was manche mit dem Internet anstellen...

Vielleicht hilfts dir ja, wenn man dich mit der Nase draufknallt:
http://msdn.microsoft.com/de-de/library/ms230117(VS.80).aspx
Die Seite enthält übrigens auch Links, denen man folgen kann...

von Jupp (Gast)


Lesenswert?

Sven, warst du heute schon auf dem Klo? Hab' nicht den 
Eindruck...glaube, du willst mir die Rolle des Forentrolls streitig 
machen, wie?

von SiMa (Gast)


Lesenswert?

hihi....

von Sven P. (Gast)


Lesenswert?

SiMa wrote:
> hihi....
Du sprichst mir aus der Seele...
Schonmal probiert eine EMail an MS zu schicken, nur so als Gedanke? 
Vielleicht können dies ja noch kleinschrittiger erklärn...

Ich klink mich aus. (Komm schon -- sag es!)

von SiMa (Gast)


Lesenswert?

kindern tue ich jeden Gefallen, deshalb: na endlich!

von Kai G. (runtimeterror)


Lesenswert?

Sven, deine Links erklären in keiner Weise wie die Dateinamen in einem 
Windows-Explorer gelistet werden, wenn man sie lexikalisch aufsteigend 
sortieren lässt!

Genausogut hättest du auf
http://www.unicode.org
http://www.google.de
oder ähnliche nutzlose Links verweisen können.

Windows sortiert meine Testdateien wie folgt:
-.txt
1.txt
2.txt
a.txt

aber auch:
1a.txt
1-a.txt
2a.txt
2-a.txt

Wie erklärst du dir das Verhalten mit den von dir geposteten Funktionen?
Wenn man der Schnitzeljagd durch deine Artikel folgt gelangt man 
hierher, wo sich wenigstens die Option findet um Sonderzeichen von der 
Sortierung auszuschließen:
http://msdn.microsoft.com/de-de/library/system.globalization.compareoptions(VS.80).aspx

Zudem wird in dem Artikeln mit keinem Wort erklärt, dass der 
Windows-Explorer diese Funktionen überhaupt nutzt!
http://de2.php.net/manual/en/function.strcmp.php
wäre etwa genauso informativ gewesen.

Die Frage nach der Programmiersprache ist echt müßig, wenn nach einem 
Algorithmus gefragt wurde!

Bei mir ist gestern genau die selbe Frage aufgetreten, als ich gemerkt 
habe, dass Eclipse die Dateien im Workspace anders sortiert als der 
Explorer und ich würde mich über konstruktive Lösungsversuche freuen.

von SiMa (Gast)


Lesenswert?

Also endlich mal zur Sache:

Soweit ich es feststellen konnte, funktioniert mein Algorithmus mit 
einer Ausnahme. Da ich es später auf einem MC realisieren möchte, habe 
ich mich auf 16-Bit beschränkt. Sieht vielleicht nicht so hübsch aus, 
aber läuft schnell. Ich gehe wie folgt vor:

1. Original-String in Uppercase wandeln. Nenne ich jetzt STR1.

2. Kopie davon nehmen und alle gleichlautenden Zeichen durch den 
Originallaut ersetzen, also z.B. Á durch A ersetzen, Ä auch durch A 
ersetzen. Resultat nenne ich jetzt STR2.

3. Alle Binärwerte aller Zeichen der Kopie um 0x100 erhöhen.

4. Alle führenden Nullen von Ziffernfolgen aus STR2 raufwerfen.

5. Alle Ziffern in den Binärwert ändern, also z.B. '3' in 0x03.

6. Bei Ziffernfolgen zählen, wie viele Stellen diese Zahl hat und bei 
der ersten Ziffer mit 0x10 multipliziert aufadieren, z.B. wird so aus 
'242' dann 0x22,0x04,0x02

7. Dann Kopien simpel binär sortieren. Wenn zwei Zeichenketten identisch 
sind, dann zugehörige STR1-Strings binär vergleichen.

Das ist grob der Algorithmus. Den exakten Code traue ich mich nicht zu 
veröffentlichen, sonst haut mich sicher der Übergott Sven.
Funktioniert (soweit ich getestet habe) bis auf eine Ausnahme: das 
Minus-zeichen. Wie das einzusortieren ist, versteh ich noch nicht (siehe 
mein obiges Beispiel)

von Jörg (Gast)


Lesenswert?

Unter Windows gibts ganz einfache Betriebssystem-Funktionen um alle
Dateinamen anzuzeigen. Meistens sind das Funktionen wie GetFirst und
GetNext (oder irgend sowas). Die Reihenfolge ist dann idR die
Reihenfolge der Erzeugung.
Um die Dateinamen nun zu sortieren, werden ebenfalls BT-Funktionen
eingesetzt. So werden under Windows (jedem Windows!!) in allen
Combo/List-Boxen ein und die selbe Funktion verwendet. Und da Libs
wie C#/Net,FoundationClasses etc. auf diesen Widgets aufbauen, sortiert
Windows in Fenstern immer gleich. Sortiert wird glaube ich nach
ASCII-Reihenfolge, was auch die Reihenfolge in Benedikt's zweitem
Beispiel erklärt (erstes Beispiel habe ich noch nie gesehen, aber man
weiss bei Windows ja nie).

Willst Du also wie in Windows sortieren, so must Du entweder eine Combo
oder ListBox mit Sortier-Flag erzeugen oder aber die BT-Sortierfunktion
finden (weiss das es sie gibt, aber nicht wie man sie findet). Du kannst
auch alternativ in VisualBasic,C# etc. das gleiche machen, sortiert
wird dann immer gleich.

von SiMa (Gast)


Lesenswert?

Aber laut Superstar Sven wird in jedem Programm anders sortiert?!

Okay, aber ich suche einen Algorithmus, den ich später auch auf einem MC 
laufen lassen kann, also ohne Windows-"Hilfsroutinen" .

von spess53 (Gast)


Lesenswert?

Hi

>Um die Dateinamen nun zu sortieren, werden ebenfalls BT-Funktionen
eingesetzt. So werden under Windows (jedem Windows!!) in allen...

Es gibt eine BT-Funktion 'DlgDirList'. Das ist Windows-spezifisch. 
Listen-Objekte sind von der Programmiersprache abhängig, und gehorchen 
den jeweiligen Regeln. Beispielsweise nutzt Delphi einen eigenen 
Sortieralgorithmus für Listen.

>Okay, aber ich suche einen Algorithmus,....

Dann solltest du mal die Reihenfolge analysieren und einen 
entsprechenden Algorithmus selbst schreiben!

MfG Spess

von SiMa (Gast)


Lesenswert?

@spess53
Danke für den heißen Tipp.

von yalu (Gast)


Lesenswert?

Die alphabetische Sortierung ist länderspezifisch. Bspw. ist ein
deutsches Lexikon anders sortiert als ein englisches und sogar anders
als ein österreichisches. Ich nehme an, dass auch Windows, abhängig
von den "Ländereinstellungen", unterschiedliche Sortierreihenfolgen
anwendet. Linux tut dieses jedenfalls und MacOS m.W. auch.

Soll die Sortierung auf einem Mikrocontroller stattfinden und gleich
sein wie auf einem bestimmten Windows-PC, muss entweder das
Mikrocontrollerprogramm passend zur Windows-Einstellung konfiguriert
werden oder umgekehrt.

von SiMa (Gast)


Lesenswert?

@yalu
Ja, die Sortierung ist natürlich auch länderspezifisch. In meinem Fall 
kann ich mich aber auf die deutsche Sortierung beschränken.

von Haku (Gast)


Lesenswert?

Letzter Versuch (Versuch! Also versuchs wenigstens mal):

Erstens: Du liest dir dashier durch:
http://support.microsoft.com/kb/319827

Zweitens: Du vergleichst es damit:
http://groups.google.com/group/microsoft.public.scripting.vbscript/msg/6463e6f1c56cd39e

Dort wird als Beispiel angegeben:
z8A88.txt
z9A99.txt
z88A8.txt
z99A9.txt

Verglichen wird jetzt jeweils das erste Zahlenartige im Namen, also:
z8A88.txt   --> zählt als "z" + 8
z9A99.txt   --> zählt als "z" + 9
z88A8.txt   --> zählt als "z" + 88
z99A9.txt   --> zählt als "z" + 99


Drittens: Wende das auf dein Problem an:
"-" zählt als Zahl wie ein negatives Vorzeichen.

A           -> "A"
-A          -> 0 + "A", Zahlen hinterher
A-          -> "A" + 0
AB          -> "AB", länger als "A", also hinterher
-AB         -> 0 + "AB", Zahlen hinterher wie oben
AB-         -> "AB" + 0
-ABC        -> 0 + "ABC", "ABC" ist länger als *"AB"*, also hinterher
-ABCD       -> 0 + "ABCD", "ABCD" länger als *"ABC"*
B           -> "B"
-B
B-


Also:
1. Erst Buchstaben
2. Dann vorab numerierte Buchstaben
3. Dann hinterher numerierte Buchstaben
Sonst wie im Wörterbuch bezogen auf die Buchstaben: Das Längere Wort 
hinterher.

Reicht dir das jetzt?

von Sven P. (Gast)


Lesenswert?

Sorry, der vorstehende Beitrag von "Haku" stammt von mir.
Nachtrag:

http://msdn.microsoft.com/en-us/library/bb759947(VS.85).aspx 
(StrCmpLogicalW).

von SiMa (Gast)


Lesenswert?

achja?
Dann erklär mir mal, wieso das hier so sortiert wird:

-1b
-20b
a1
a20
-a
b20
-b

Nach Deinen Regeln:
Also erst Buchstaben. Folglich kommt neuerdings B vor A...aha
Dann vorab numerierte Buchstaben. Da angeblich "-" als negatives 
Vorzeichen gewertet wird, ist also neuerdings -1 kleiner als -20..aha

von SiMa (Gast)


Lesenswert?

Übrigens: Auf welches Programm beziehen sich denn Deine Regeln? Welche 
Version und welches BS? Ist doch alles so unterschiedlich

von Sven P. (Gast)


Lesenswert?

Ich gebs jetzt endgültig auf. ("Na endlich")
Hab jetzt ne halbe Stunde recherchiert, irgendwie wohl sinnlos, für so 
einen undankbaren Kerl wie SiMa. Statt rumzunörgeln, könnte der ja auch 
mal das Hirn einschalten und selber was probieren.

Apropos...  spess53, volles Einverständnis :-}

von SiMa (Gast)


Lesenswert?

Also Du gibst Dich hier als Mister Allwissend, der dem dummen kleinen 
SiMa mal zeigen muss, wo der Hammer hängt. Und dann belehrst Du mich von 
oben herab mit Regeln, die ja wohl eindeutig nicht stimmen.

Ich habe hier nach Hilfe gefragt und nicht nach schwachsinniger 
Belehrung!
Ich würde Dir gerne meinen Dank aussprechen, wenn es da etwas gäbe, was 
dankenswert wäre. Aber sinnlose Regeln und Vermutungen helfen selbst von 
Dir nicht weiter...moser andere Leute an, wenn Du mal was weißt. 
Ansonsten sei einfach nur still!!

von yalu (Gast)


Lesenswert?

@SiMa:
Sven Pauli ist derjenige in diesem Thread, der bis jetzt die meisten
Geheimnisse der Windows-Sortierreihenfolge gelüftet hat. Deswegen
finde ich deine Art, über ihn herzuziehen, einfach daneben.

Die Sortierreihenfolge in Windows ist offensichtlich völlig krank
und fernab jeglicher Logik. Es ist zwar allgemein bekannt, dass vieles
in Windows etwas schräg ist. Aber das Zeugs, das die MS-Jungs (und
-Mädels) während der Festlegung der Dateinamensortierung geraucht
haben, muss gigaverdorben gewesen sein.

Das mit der Interpretation von Ziffernfolgen als Dezimalzahlen und der
entsprechenden Sortierung geht gerade noch so in meinen Kopf. Wirklich
extrem wird es aber bei den Bindestrichen und anderen Sonderzeichen.
Hierzu noch ein anderer Link, der sich zwar auf den SQL Server
bezieht, aber wahrscheinlich auch auf andere MS-Programme wie den
Explorer anwendbar ist:

  http://support.microsoft.com/kb/305704

Aber auch hier wird nur beschrieben, wie Begriffe sortiert werden, die
sich nur in einem Bindestrich unterscheiden. Alle anderen Fälle wie
bspw. die Reihenfolge von -AA, A-A, AA-, -A-A, A-A- usw. sind auch mit
diesem Artikel nicht abgedeckt.

Da ich mittlerweile ebenfalls eine ganze Weile erfolglos nach einer
anständigen und vor allem vollständigen Dokumentation des Sachverhalts
gesucht habe, gehe ich davon aus, dass eine solche nicht existiert.
Möglicherweise sind in dem Algorithmus solche Spezialfälle wie oben
gar nicht explizit berücksichtigt, sondern werden - abhängig von der
Reihenfolge interner Abfragen u.ä. - einfach irgendwie behandelt.
Ein geneigter Windows-Fetischist mag das so entstandene "Regelwerk"
vielleicht mit Hilfe eines Disassemblers herausfinden.

Allerdings gehe ich davon aus, dass der Code etliche Kilobytes lang
ist. Da stellt sich die Frage, ob man mit so einem Quatsch wirklich
einen Mikrocontroller quälen muss, zumal sich mit der nächsten
Windows-Ausgabe sich möglicherweise wieder alles ändern wird.

Sortiere deine Strings doch nach DIN 5007, dann hast du wenigstens
etwas Offizielles, worauf du dich stützen kannst.

von SiMa (Gast)


Lesenswert?

@Yalu
Moment: der von mir angegebene Algorithmus (und den habe ich hier 
reingeschrieben, bevor Sven seine Superregeln gepinselt hat) erledigt, 
bis auf das Problem mit dem "-", alles! Wieso behauptest Du, dieser Sven 
wäre der einzige, der hier irgendwelche Windows-Geheimnisse gelüftet 
hätte? Gar nichts hat er gelüftet, denn seine Regeln sind falsch!

Sicherlich einzigartig ist seine Art (und zwar von Anfang an!), sich als 
allwissend darzustellen. Er behauptet doch, das wäre alles ein 
Kinderspiel und ich wäre ja nur zu doof und zu faul, das mal schnell 
nachzulesen! Um dies noch zu unterstützen, spricht er ständig 
Beleidigungen aus. Und dies meinen auch andere in diesem Thread!!

So, und wo sind wir jetzt? Nach langem sinnlosem Gesabber stellen hier 
die Fachleute fest, dass es eben doch nicht so einfach ist und man dann 
doch besser aufgibt. Eine Art der Lösung, die ich gesucht habe.

von Karl H. (kbuchegg)


Lesenswert?

@Sven && @SiMa

Es reicht jetzt!

von df311 (Gast)


Lesenswert?

implementiere eine sortierung nach einer graduiert-lexikographischen 
ordnung über das ascii-alphabet und du musst dir keine gedanken um 
irgendwelche sonderfälle machen.

und wer zum geier hat dateinamen wie:
-1b
-20b
a1
a20
-a
b20
-b
?

von SiMa (Gast)


Lesenswert?

@df311
Naja, ich bin auf dieses problem mit dem "-" gekommen, weil ich meine 
MP3-Dateien angesehen habe und "a-ha" seltsam eingeordnet wurde...

von Arc N. (arc)


Lesenswert?

df311 wrote:
> implementiere eine sortierung nach einer graduiert-lexikographischen
> ordnung über das ascii-alphabet und du musst dir keine gedanken um
> irgendwelche sonderfälle machen.

Vollkommen sinnlos, da dann z.B. großgeschriebene Wörter vor 
Kleingeschriebenen stehen würden (widerspricht u.a. DIN 5007).

> Die Sortierreihenfolge in Windows ist offensichtlich völlig krank
> und fernab jeglicher Logik. Es ist zwar allgemein bekannt, dass vieles
> in Windows etwas schräg ist. Aber das Zeugs, das die MS-Jungs (und
> -Mädels) während der Festlegung der Dateinamensortierung geraucht
> haben, muss gigaverdorben gewesen sein.

Übliches MS gebashe...
Das der Mac Finder oder der Konqueror ähnlich sortieren, passt natürlich 
nicht ins Konzept...

Das Problem ist, das DIN 5007 nicht alle Fälle abdeckt und somit 
(scheinbar willkürliche) Entscheidungen getroffen werden müssen.
String-Vergleich in Unicode
http://www.unicode.org/unicode/reports/tr10/#S1.1
Natural Sort Order
http://www.codinghorror.com/blog/archives/001018.html
Oder mal zum Vergleich verschiedener Sortierungen
http://www.quarkuser.net/quarkxpress/alphabetisch_sortieren/

von yalu (Gast)


Lesenswert?

>> Die Sortierreihenfolge in Windows ist offensichtlich völlig krank
>> und fernab jeglicher Logik. ...
>
> Übliches MS gebashe...
> Das der Mac Finder oder der Konqueror ähnlich sortieren, passt
> natürlich nicht ins Konzept...

Gebashe ja, dazu stehe ich ;-)

MS-Gebashe aber nur deswegen, weil der Threadstarter mit einem
MS-Produkt auf das Problem gestoßen ist. Hätte er nach der
Sortierreihenfolge in einem Produkt eines anderen Herstellers gefragt,
und wäre diese ebenso wirr, und wäre es ebenso schwer, eine
Dokumentation dazu zu finden, hätte ich genauso gebasht.

Die Sortierung soll doch dem Anwender helfen, in einer langen Liste
von Dateinamen einen bestimmten schnell aufzufinden. Das kann aber nur
dann funktionieren, wenn der Anwender die Sortierregeln kennt. Sind
diese nicht bekannt, bringt die Sortierung keinen Nutzen.

Weil überhaupt keine Einigkeit bei den Sortierregeln zu bestehen
scheint, und nicht einmal das DIN es schafft, eine halbwegs eindeutige
Spezifikation aufzustellen, bin ich dazu übergegangen, wo möglich die
POSIX-Sortierreihenfolge einzustellen und in Dateinamen nur druckbare
Zeichen der 7-Bit-ASCII-Kodierung (abzüglich einiger verwirrender
Sonderzeichen) zu verwenden. Damit hat dann auch der Mikrocontroller
keine Probleme :)

von SiMa (Gast)


Lesenswert?

Natürlich kann ich Sortierregeln finden/anwenden, die den MC entlasten. 
Wäre mir persönlich auch am Liebsten. Mein Problem ist aber, dass die 
Sortier-Ergebnisse meines MC mit (im Wesentlichen) dem Windows Explorer 
verglichen werden. Der ist nunmal sehr verbreitet. Also sollte es dazu 
möglichst gleich sein.

von Geniesser (Gast)


Lesenswert?

>Die Sortierung soll doch dem Anwender helfen, in einer langen Liste
>von Dateinamen einen bestimmten schnell aufzufinden. Das kann aber nur
>dann funktionieren, wenn der Anwender die Sortierregeln kennt. Sind
>diese nicht bekannt, bringt die Sortierung keinen Nutzen.

Sorry yalu, aber ich wüsste beim besten Willen auf Anhieb generell 
nicht, wo ich Dateien mit Minus "-" im Dateinamen in der angezeigten 
Liste zu erwarten habe. Ich bin zufrieden, dass bei MS der Underscore 
"_" stets zuerst in der Dateiliste erscheint, denn diesen Nutze ich 
gerne für kurze Bemerkungen die ich als Pseudo-Verzeichnisnamen erstelle 
oder auch um bestimmte Verzeichnisse hervorzuheben.

von Kai G. (runtimeterror)


Lesenswert?

Interessant wird das mit dem Minus, wenn du es zum Trennen mehrerer 
Angaben in einem Dateinamen verwenden willst (wie es häufig bei Dateien 
im Web-Bereich der Fall ist):
scan-2008-03-01-deckblatt.png
scan-2008-03-01-seite-1.png
scan-2008-03-01-seite-10.png

Was weiß ich. Normaler Weise sorge ich auch für eine lexikalisch 
sortierbare Benennung.

@SiMa: wirst dich wohl damit zufrieden geben müssen, dass keiner hier 
eine Antwort auf die Frage liefern kann und du damit in meinen Augen 
vier Möglichkeiten hast:
1) Verwende eine Sortierung, die dir vom Bauchgefühl her passt und die 
einfach zu implementieren ist (genug Vorschläge gab's ja jetzt)
2) Versuche dich der hier im Thread erarbeiteten Microsoft-(Un)logik 
anzunähern und verzichte auf das letzte Quäntchen
3) Hol dir 'ne Pizza, mach die Jalousien runter und schmeiß den 
Disassembler an.
4) Kurbel selbst nochmal die Suchmaschine an und komme zu dem Schluss, 
dass Sven die vermutlich besten Links zu dem Thema gefunden hat und 
fahre frustriert bei Punkt 1-3 fort.

Viel Spaß ;)

von Blob! (Gast)


Lesenswert?

hatte das gleiche Prob vor kurzem mit einem kleinen Java-Progrämmchen.

Ich habe es damals so gelöst, dass das Minuszeichen (für mich war/ist es 
ein Bindestrich) als Sonderzeichen gewertet wird.

Die Reihenfolge war also Sonderzeichen - Zahlen - Buchstaben
Wobei ich die Sonderzeichen in der Reihenfolge, wie sie auch in der 
Windows Zeichentabelle sind, gewählt habe.

Ich habe diese "Sortierregel" innerhalb von 5min festgelegt nachdem ich 
eben auch bemerkt habe, dass Windows da nicht wirklich logisch vorgeht.

Und ich glaube dass die meisten User, die mein Programm verwenden, gar 
nicht bemerken werden dass es ein wenig anderst sortiert!

Mal ehrlich: wer achtet den eigentlich bewußt auf sowas!?

von Theo (Gast)


Lesenswert?

Blob! wrote:
> Mal ehrlich: wer achtet den eigentlich bewußt auf sowas!?

So Leute (...) wie SiMa (...) zum Beispiel. Lieber weltfremd und 
Microsoft statt logisch nachvollziehbar.

von SiMa (Gast)


Lesenswert?

@Theo
Nett, wie Du hier von weltfremd redest. Können die Leute hier eigentlich 
nur Beleidigungen aussprechen, wenn sie fachlich nichts beitragen 
können?

Weltfremd sind die, die programmieren und sagen: ist doch mir egal, was 
der Kunde will. Er soll damit leben, was ich ihm gnädigerweise vorsetze!

Unsere Kunden werden das anmeckern...und deshalb versuche ich solche 
Dinge eben so zu machen, wie es die Kunden wollen. Das spart hinterher 
im Vertrieb und beim Service viel Zeit! Vielleicht würde Dein 
Brötchengeber mehr Gewinn machen, wenn die Mitarbeiter auch mal 3cm über 
den Tellerrand hinaus sehen würden?!

von Blob! (Gast)


Lesenswert?

naja, bei komerziellen Anwendungen sollte es dann doch ein wenig 
professioneller daher kommen. Bei meiner klicki-bunti-freeware fande ich 
aber keine notwendigkeit grössere Nachforschungen anzustellen.

Hat sich bei dir, SiMa, schon was ergeben?

ansonsten kann ich Dir leider auch nciht weiter helfen, da bleibt wohl 
nur das durchforsten der MSDN oder aber Du erstellst einen Berg voll 
Dateien mit unterschiedlichen Namen und testest selbst den algorytmus 
aus.

von Gandalf (Gast)


Lesenswert?

Ich seh gerade dass Du das für nen mp3-Player machst, ich denk da wird's 
doch nit so wild sein oder? - i.d.R. gehen doch mp3's mit einer Zahl los 
wenn man keine playlist verwendet?


und "kunden" werden sich da auch nicht beschweren, oder? ;)

von tastendrücker (Gast)


Lesenswert?

> i.d.R. gehen doch mp3's mit einer Zahl los

Welche Regel ist das denn? Meine (und die unzähliger anderer) Beginnen 
mit dem Interpreten. ( Geile Band - Geiler Song.mp3)

von SiMa (Gast)


Lesenswert?

Also ich habe meine MP3-Dateien auch nach Interpret-Titel.MP3 benannt. 
Und gerade bei einem MP3-Player erwarten die Kunden, dass die 
Reihenfolge so abgespielt wird, wie sie sie im Verzeichnis sehen. Und 
das sind nunmal, ob man Microsoft mag oder nicht, in der großen Überzahl 
Windows-User. Und angezeigt werden dort die Dateien eben im Wesentlichen 
mit dem Windows-Explorer.

Seid mir nicht böse, aber wieso muss ich mich für meine Frage nach einem 
Algorithmus rechtfertigen? Ist es nicht möglich, einfach auf die Frage 
einzugehen? Dies sehe ich hier leider in vielen Threads. Fragt einer 
nach einem 3,3V-Regler, wird erstmal diskutiert, wozu er überhaupt 3,3V 
braucht und nicht 5V nimmt. Glaubt mir, ich habe meine Gründe, wieso ich 
diesen Algorithmus brauche...

@Blob!
Mein selbstausgetüftelter Algorithmus läuft 100%ig, so lange nicht 
dieses dumme "-" drin ist. Wie das einzuordnen ist (vor allem, wenn 
gleich 2 oder 3 davon im Dateinamen sind) habe ich noch nicht 
verstanden...

von Kai G. (runtimeterror)


Lesenswert?

Für die Masochisten unter euch:
http://www.pctools.com/guides/registry/detail/1293/
http://support.microsoft.com/kb/319827

Viel dichter wird man nicht dran kommen.

>Und das sind nunmal, ob man Microsoft mag oder nicht, in der großen Überzahl
>Windows-User.

Welches Windows? XP SP1, SP2, SP3 oder Vista? Dir kann kann keiner 
garantieren, dass es dazwischen nicht noch weitere Unterschiede gibt. 
Zwischen Win2000 und XP gab's auf jeden Fall einen gravierenden.

von SiMa (Gast)


Lesenswert?

@Kai
Sei mir nicht böse, aber Deine Links nützen mir rein gar nichts. Es geht 
nicht darum, den User dazu zu bringen, seine Windows-Einstellungen zu 
ändern, sondern darum, die Sortierreihenfolge wie Windows-XP zu machen.
Und es geht auch nicht um das Einsortieren von zahlen. Das ist doch 
schon längst geklärt.

Und laut Microsoft hat sich zwischen W2000 und XP bezüglich der 
Sortierung nichts geändert. Wo soll der Unterschied sein? Abgesehen 
hiervon sind die aktuellen Versionen XP und Vista. Durch die SPs änderte 
sich bis jetzt nichts!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Und laut Microsoft hat sich zwischen W2000 und XP bezüglich der
> Sortierung nichts geändert.

Hat es aber. Und zwar erheblich. Einerseits bietet der XP-Explorer die 
Option "Ansicht"->"Symbole anordnen nach"->"In Gruppen anzeigen", die 
der W2K-Explorer nicht kennt, andererseits sortiert der W2K-Explorer

  1 10 11 2 20 21 3 ...

während der XP-Explorer

  1 2 3 10 11 20 21 ...

sortiert.

(Ansicht "Details", Klick auf Spaltenüberschrift "Name").

Möglicherweise hat Deine ursprüngliche Frage hier auch so viel Getöse 
hervorgerufen, weil Du danach gefragt hast, wie Windows Dateinamen 
sortiert - und nicht, wie der Explorer Dateinamen sortiert.

Das DIR-Kommando in der Konsole ist auch Windows und sortiert bei Angabe 
von /ON übrigens wie der W2K-Explorer.

von Karl H. (kbuchegg)


Lesenswert?

Gibt es eigentlich den Microsoft News Server noch?

Das wäre meine erste Anlaufstelle bei solchen Fragen.
Da das Thema anscheinend nicht trivial ist und darauf hinausläuft
rauszufinden, welches Vergleichskriterium die Microsoft
Programmierer benutzt haben, würde ich versuchen an diese Leute
so nah wie möglich heranzukommen und sie selbst zu fragen, anstatt
irgendwelche Leute in einem Forum, welches zwar sehr gut ist,
sich aber eigentlich mit Mikrocontrollern beschäftigt.

von Kai G. (runtimeterror)


Lesenswert?

@SiMa
Sag mal hast du die Links überhaupt gelesen? Ich weiß, dass das viel 
Text ist, aber ich habe da scheinbar deutlich mehr Informationen 
gefunden:

>Sei mir nicht böse, aber Deine Links nützen mir rein gar nichts. Es geht
>nicht darum, den User dazu zu bringen, seine Windows-Einstellungen zu
>ändern, sondern darum, die Sortierreihenfolge wie Windows-XP zu machen.

Ist mir schon klar, ich wollte dir nur aufzeigen, dass es anscheinend 
Versionsunterschiede gibt und dass ich nicht ausschließen kann, dass es 
noch weitere Unterschiede gibt, die dich dann doch wieder betreffen.

>Und es geht auch nicht um das Einsortieren von zahlen. Das ist doch
>schon längst geklärt.

Mir ist klar, dass das mit den Zahlen schon geklärt ist - daher habe ich 
speziell für dich einen Artikel rausgesucht, der sich auch um die 
Bindestriche und andere Sonderzeichen kümmert! Ist zwar nicht 
erschöpfend, aber schon relativ dicht am tatsächilchen Verhalten dran.

>Und laut Microsoft hat sich zwischen W2000 und XP bezüglich der
>Sortierung nichts geändert.

Laut Microsoft gibt es einen Schalter, mit dem man explizit die 
Kompatibilität zu Windows 2000 wieder herstellen kann - steht aber 
erschöpfend in den Links, die ich dir gepostet habe! Sogar im Original 
von Microsoft!

>Abgesehen hiervon sind die aktuellen Versionen XP und Vista. Durch die SPs 
>änderte sich bis jetzt nichts!

Woher weißt du das? Du leugnest ja sogar den Unterschied zwischen 
Windows 2000 und XP.

Ich habe ehrlich gesagt auch keine Lust mehr dir zu helfen, wenn du 
selbst scheinbar kaum Zeit in das Lesen der dir vorgelegten 
Informationen investierst. Ich weiß, dass das viel Text ist, aber eine 
Komplettlösung wird's nicht geben und der Rest ist nunmal 
Eigeninitiative!

Ansonsten kann ich nur Karl heinz Buchegger zustimmen - geh zur Quelle, 
alles andere ist Spekulation.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Im übrigen erwähnt MS in der Dokumentation der Funktion lstrcmp 
folgendes:
1
The lstrcmp function uses a word sort, rather than a string sort. A word 
2
sort treats hyphens and apostrophes differently than it treats other 
3
symbols that are not alphanumeric, in order to ensure that words such as
4
"coop" and "co-op" stay together within a sorted list. 
5
For a detailed discussion of word sorts and string sorts, see the 
6
Remarks section for the CompareString function.

Die Dokumentation der Win32-API-Funktion CompareString beschreibt in 
eben jener "Remarks section" (unter anderem) dies:
1
Evaluating Strings 
2
3
If the two strings are different lengths, they are compared up 
4
to the length of the shortest one. If they are equivalent at that 
5
point, the return value indicates that the longer string is greater. 
6
(...)
7
8
Typically, strings are compared using what is called a "word sort" 
9
technique. In a word sort, all punctuation marks and other 
10
nonalphanumeric characters, except for the hyphen and the 
11
apostrophe, come before any alphanumeric character. 
12
The hyphen and the apostrophe are treated differently than the 
13
other nonalphanumeric symbols, in order to ensure that words 
14
such as "coop" and "co-op" stay together within a sorted list. 
15
16
If the SORT_STRINGSORT flag is specified, strings are compared 
17
using what is called a "string sort" technique. In a string sort, 
18
the hyphen and apostrophe are treated just like any other 
19
nonalphanumeric symbols. Their positions in the collating 
20
sequence are before the alphanumeric symbols. 
21
22
The following table shows a list of words sorted both ways. 
23
Word Sort String Sort  Word Sort String Sort 
24
billet    bill's       t-ant     t-ant  
25
bills     billet       tanya     t-aria  
26
bill's    bills        t-aria    tanya  
27
cannot    can't        sued      sue's  
28
cant      cannot       sues      sued  
29
can't     cant         sue's     sues  
30
con       co-op        went      we're  
31
coop      con          were      went  
32
co-op     coop         we're     were

Dazu kommt noch, daß "accented characters" (und dazu dürften auch unsere 
Umlaute zählen) in Abhängigkeit von der locale unterschiedlich 
behandelt werden:
1
Language-specific Notes 
2
The NORM_IGNORENONSPACE flag only has an effect for the locales in 
3
which accented characters are sorted in a second pass from main 
4
characters. All characters in the string are first compared without 
5
regard to accents and (if the strings are equal) a second pass over 
6
the strings is performed to compare accents. In this case, this flag 
7
causes the second pass to not be performed. For locales that sort 
8
accented characters in the first pass, this flag has no effect.

Das herauszufinden hat mich jetzt etwa 10 Minuten gekostet. Es ist recht 
wahrscheinlich, daß der Explorer die Funktion CompareString oder 
ähnliches verwendet.
Ein dumpbin /imports zeigt, daß folgende Funktionen importiert werden:

lstrcmpW
lstrcmpiA
lstrcmpiW
(aus kernel32.dll)

StrCmpNIW
StrCmpW
StrCmpIW
StrCmpNW
(aus shlwapi.dll)

Gut, kein CompareString, aber lstrcmp. Und das verwendet "word sort". 
Das Verhalten von StrCmp aus shlwapi.dll scheint nicht weiter 
dokumentiert zu sein.

Was bei den verschiedenen Vergleichsfunktionen intern passiert, ist hier 
beschrieben:

http://blogs.msdn.com/michkap/archive/2005/05/08/415522.aspx

von SiMa (Gast)


Lesenswert?

@Kai
Ich habe nur geschrieben, dass sich laut eines Microsoft-Artikels die 
Sortierreihenfolge von Windows-2000 und Windows-XP nicht unterscheidet. 
Da habe ich vermutlich 2000 mit 2003 verwechselt. Entschuldigung. 
Allerdings habe ich darauf nie geachtet, denn ich suche die 
Sortierreihenfolge von XP.

Ich bin durchaus in der Lage, mehr als nur eine Zeile zu lesen. Wo Du 
allerdings in den von Dir angeführten Links Informationen über das 
Einsortieren des Bindestrichs siehst, entgeht mir immer noch. Ich kann 
da nichts drüber finden!


@Karl heinz
Microsoft habe ich schon längst angeschrieben, aber bisher keine 
sinnvolle Antwort erhalten. Ansonsten entschuldige ich mich auch bei 
Dir, dass ich auf die Idee gekommen bin, in einem Forum, in dem es extra 
eine Rubrik für PC-Programmierung gibt, nach soetwas zu fragen. Wie 
gewünscht werde ich mich jetzt anderweitig um Lösungen bemühen und Euch 
nicht stören.


@Rufus t. Firefly
Ich bin doch tatsächlich davon ausgegangen, dass "wie Windows sortiert" 
den Windows-Explorer meint. Zu dumm von mir, dass ich erst im nächsten 
Beitrag Windows-XP spezifiziert habe und dann auch noch vergessen habe, 
dass ich "dir" mit zusätzlichen Switches nicht meine. Da kann ich nur 
noch nachträglich Sven Pauli Recht geben: ich bin einfach nur doof.


Ich verabschiede mich hier von der Erbsenzählerei. Jetzt könnt Ihr 
ungehemmt über mich lästern.

von Karl H. (kbuchegg)


Lesenswert?

SiMa wrote:

> Microsoft habe ich schon längst angeschrieben, aber bisher keine
> sinnvolle Antwort erhalten.

Anschreiben wird auch nichts bringen.
MS betreibt (betrieb?) einen News-Server. Dort hängen fähige Leute
rum, die auch Einblick in die Windows-Internals haben. Es ist nicht
ungewöhnlich, dass MS Entwickler dort mitlesen.

> Ansonsten entschuldige ich mich auch bei

Brauchst du nicht

> Dir, dass ich auf die Idee gekommen bin, in einem Forum, in dem es extra
> eine Rubrik für PC-Programmierung gibt, nach soetwas zu fragen.

Ist alles eine Frage, wie weit man gehen will. Das Forum hier kratzt
eher an der Windows Oberfläche. 80% aller Fragen drehen sich um die
Ansteuerung einer seriellen Schnittstelle in VB :-)

Im Ernst: Ich denke wirklich, dass das hier das falsche Forum für
eine derartige Frage ist. Auch wenn hier viele Leute gute bis
sehr gute Kenntnisse über Windows-Internals haben, ist diese Site
in seinem hauptsächlichen Verwendungszweck auf µC-relevante Dinge
ausgelegt. Dementsprechend ist auch das Publikum.
Anders ausgedrückt: Auch wenn es beim Fleischer Käse zu kaufen
gibt, würde ich mit einer Frage zu bestimmten Käse-Schimmelkulturen
zu einer Käserei gehen und nicht die Fleischfachverkäuferin
löchern.

Nichts für ungut.

von Kai G. (runtimeterror)


Lesenswert?

>Wo Du allerdings in den von Dir angeführten Links Informationen über das 
>Einsortieren des Bindestrichs siehst, entgeht mir immer noch.

Sorry, mein Fehler - ich sehe gerade, dass ich gestern den falschen Link 
erwischt habe!

Kernaussage von dem Link, den ich eigentlich meinte, war, dass die 
führenden Bindestriche bei der Sortierung einfach ignoriert werden. Ich 
schau mal, ob ich den nochmal wiederfinde...

>Ich verabschiede mich hier von der Erbsenzählerei.

Na ja - denk mal über deine Anforderungen nach: Du nimmst das mit der 
Sortierung auch ziemlich genau.

>Seid mir nicht böse, aber wieso muss ich mich für meine Frage nach einem
>Algorithmus rechtfertigen? Ist es nicht möglich, einfach auf die Frage
>einzugehen?

Ganz einfach, wenn es keine (einfache) Antwort auf deine Frage gibt, 
setzt man immer einen Schritt früher an und schaut nach, ob sich an den 
Anforderungen was machen lässt, so dass das Problem nicht mehr auftritt.
Bevor ich Tage in die Lösung eines Problems investiere, welches den 
Aufwand einfach nicht rechtfertigt, nehme ich den Hörer in die Hand und 
versuche den Kunden davon zu überzeugen, dass die andere Lösung keine 
nennenswerten Nachteile mit sich bringt. Kostet dich 5 Minuten und spart 
u.U. ein paar Kubikeuro.

Wenn ich dich frage, wie ich über eine Laterne klettere weil mir diese 
im Weg ist, wirst du mich auch fragen, warum ich nicht einfach drum 
herum gehe.

Ansonsten Mut zur Lücke in der Hoffnung, dass er bei der Abnahme nicht 
die super-mega-Spezialfälle ausprobiert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Ich bin doch tatsächlich davon ausgegangen, dass "wie Windows
> sortiert" den Windows-Explorer meint. Zu dumm von mir, dass ich
> erst im nächsten Beitrag Windows-XP spezifiziert habe und dann
> auch noch vergessen habe, dass ich "dir" mit zusätzlichen
> Switches nicht meine. Da kann ich nur noch nachträglich
> Sven Pauli Recht geben: ich bin einfach nur doof.

Dem ist, vor allem in Anbetracht Deiner sonstigen Reaktionen auf 
hilfreiche (oder hilfreich gemeinte) Hinweise, wohl nur zuzustimmen.

Wer um Hilfe bittet, und bei der ersten Antwort, die ihm nicht in den 
Kram passt, sein Gegenüber als Idiot darstellt, muss sich nicht wundern, 
wenn auch er als ein solcher angesehen wird.

von Kai G. (runtimeterror)


Lesenswert?

>Wer um Hilfe bittet, und bei der ersten Antwort, die ihm nicht in den
>Kram passt, sein Gegenüber als Idiot darstellt, muss sich nicht wundern,
>wenn auch er als ein solcher angesehen wird.

Sehe ich ähnlich - ich kenne Leute die bedanken sich selbst dann für die 
investierte Zeit, wenn die Antwort nicht zu 100% mit der gesuchten 
Lösung übereinstimmt.

von yalu (Gast)


Lesenswert?

Wie einzelne Bindestriche oder Apostrophe in Dateinamen behandelt
werden dürfte nach nach den bisher geposteten Links klar sein.

Für Dateinamen, die beliebig viele Bindestriche und beliebig oft ein
weiteres Zeichen enthalten (also bspw. alle Kombinationen der Zeichen
'-' und 'a'), habe ich das System auch schon herausgefunden, es ist
aber schon so kompliziert, dass ich es kaum in Worten formulieren
kann ;-)

Schwierig wird, wenn mehrere Bindestriche mit unterschiedlichen
Buchstaben kombiniert werden, s. obiges Beispiel:

> ABA
> -ABA
> A-BA
> -A-BA
> ABA-

An Horror grenzt das Ganze, wenn man mehrere Bindestriche und
Apostrophe gemischt zulässt. Einfach mal ein paar Dateien anlegen,
dern Namen nur aus '-' und ''' bestehen und staunen. Das wäre sicher
eine hervorragende Basis für einen Pseudozufallszahlengenerator :)


@SiMa (wenn du dich noch nicht ausgeklinkt hast):

Die MP3-Files, um die es geht, kommen doch sicher von einem PC. Lass
sie doch einfach beim Upload auf den Player vom PC sortieren. Dann
hast du die Gewähr, dass sie immer "richtig" sortiert sind, unabhängig
von der OS-Version, Servicepacks und Benutzereinstellungen.

Ok, das beantwortet zwar deine ursprünglich Frage wieder nicht, ich
halte es aber trotzdem für einen konstruktiven Vorschlag.

von *.* (Gast)


Lesenswert?

Evtl. könnte der Wine- oder ReactOS-Quellcode Aufschluss geben.

von Sven P. (Gast)


Lesenswert?

Der Konqueror sortiert übrigens auch ähnlich. Darf ich grad noch 
anmerken:
Erstens: http://www.mikrocontroller.net/articles/Benutzer:Haku (warum 
wurde das eigentlich gelöscht vorher? Sind doch nur frei übernommene 
Zitate?)
Zweitens: Linux-Quellcode angucken: Konqueror, LIBC, Wine.

Jetz is Schluss^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.