Eigentlich steht doch da Alles
Im auskommentierten MinSort wird das Record-Feld 'schl' verglichen:
IF hilfsdaten[l].schl < hilfsdaten[kleinstes].schl THEN
Im Quicksort dagegen der Record (was nicht funktioniert)
WHILE hilfsdaten[i] < x DO
Also ersetzt Du das durch
WHILE hilfsdaten[i].schl < x.schl DO
Fertig.
Es wäre allerdings eine gute Idee, eine Funktion 'RecordVergleich' zu schreiben, die das Ergebnis des Vergleiches zurückliefert, so in etwa:
Delphi-Quellcode:
Function RecordVergleich (a, b : TRecord) : Integer; // oder TVergleichsErgebnis = (veKleiner, veGleich, veGrößer)
Begin
if a.Feld1 < b.Feld1 Then RecordVergleich := -1 // veKleiner
else if a.Feld1 > b.Feld1 Then RecordVergleich := +1 // veGroeßer
else if a.Feld2 < b.Feld2 Then RecordVergleich := -1 // veKleiner
else if a.Feld2 > b.Feld2 Then RecordVergleich := +1 // veGroeßer
else if a.Feld3 < b.Feld3 Then RecordVergleich := -1 // veKleiner
else if a.Feld3 > b.Feld3 Then RecordVergleich := +1 // veGroeßer
...
else RecordVergleich := 0
End;
Diese Funktion vergleicht zwei Records zuerst nach Feld1. Wenn die Records hier identisch sind, dann nach Feld2 und wenn sie da auch identisch sind, nach Feld3. Wenn sie da auch identisch sind, dann definieren wir die beiden Records als gleich (auch wenn in anderen Feldern unterschiedliche Werte stehen).