Forum: Object-Pascal / Delphi-Language
by striderx,
13. Nov 2014
Nachtrag:
Warum der Insertion Sort aber trotz der fehlerhaften Funktion das richtige Ergebnis liefert, habe ich bislang noch nicht verstanden:
procedure tdlgMain.SortData;
var
I: Word;
J: Word;
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
Ich habe den Fehler gefunden - wie so oft lag er dort, wo man am wenigsten sucht:
Schuld war der Rückgabewert der Funktion 'GetArtistSurname', welche nicht alle Datensätze bis zum Ende durchlaufen und daher in einigen Fällen einen leeren String zurückgegeben hat.
Vielen Dank für Eure Bemühungen, das Brett vor meinem Kopf zu entfernen!!!
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
Ja, da bin ich sicher.
Und: Mit dem Insertion-Sort, der ja dieselbe Vergleichs-Funktion benutzt, klappt es ohne Probleme.
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
@p80286
sorry, habe Deine Antwort erst jetzt gesehen.
>>Die Logik versteh ich jetzt nicht!<<
Die Vergleichsfunktion produziert beim Insertion-Sort das korrekte Ergebnis. Korrekt bedeutet, dass die Reihenfolge alphabetisch aufsteigend ist.
>>Dir ist schon klar, daß Quicksort kein stabiles Verfahren ist?<<
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
Hallo Sir Rufo,
danke für Deine Hinweise. Meine Anwendung nutzt ein Datenmodell mit varianten Records - deswegen die Unterscheidung per Record-Typ. Und je nach Typ wird nach unterschiedlichen Feldern sortiert. Ich kenne mich mit IComparer jetzt nicht aus, aber so auf den ersten Blick scheint mir das auf diese Situation nicht zu passen.
Wie dem auch sei: Meine Frage ist nach wie vor, warum...
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
Dann auf ein Neues:
procedure tdlgMain.SortData;
begin
DataSort(1, TotalRecs);
end;
procedure tdlgMain.DataSort(Start, Stop: Word);
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
>>Warum keine Delphi-Tags<<
Und was wäre das genau?
>>warum nicht die eingebaute Sortierfunktion<<
Weil es das Problem dort nicht zu liegen scheint - denn beim Insertion-Sort gibt es damit kein Problem. Aber wenn ich weiß, was die Delphi-Tags sind, liefere ich die gerne nach.
Forum: Object-Pascal / Delphi-Language
by striderx,
12. Nov 2014
Hallo zusammen,
seit nicht wenigen Jahren setze ich Quicksort zum sortieren von Daten ein - alles problemlos. Jetzt habe ich aber einen Fall, in dem das Sortier-Ergebnis nicht korrekt ist. Wenn ich dann noch einmal sortiere stimmt es. Auch wenn ich alternativ einen Insertion-Sort nehme, klappt es - d. h. an der Vergleichsfunktion ('Less', s. u.) scheint es also nicht zu liegen.
Kann mir...