Hallo zusammen,
danke für die vielen nützlichen Tipps, Hinweise und Anregungen: ich habe dabei von EUCH eine ganze Menge gelernt und Vieles ist mir klar geworden!
Mit diesem soeben erworbenen Know-how konnte ich sogar meine ursprüngliche Routine realisieren und TArray.QuickSort(. . .) in den ABGELEITETEN Klassen auf „meine“ Sortierroutine umbiegen.
Hier ist das Ergebnis, falls sich jemand dafür interessieren sollte:
Delphi-Quellcode:
unit Test_TArray_QuickSort;
interface
uses
System.Generics.Collections
, System.Generics.Defaults
;
type
MyTArray =
class(TArray)
private
class procedure QuickSort<T>(
var Values:
array of T;
const Comparer: IComparer<T>;
L, R: Integer);
public
class procedure Sort<T>(
var Values:
array of T);
// !!
end;
implementation
class procedure MyTArray.QuickSort<T>(
var Values:
array of T;
const Comparer: IComparer<T>;
L, R: Integer);
Begin
// hier soll die neue QuickSort-Routine folgen:
End;
class procedure MyTArray.Sort<T>(
var Values:
array of T);
begin
QuickSort<T>(Values, TComparer<T>.
Default, Low(Values), High(Values));
end;
Und das Testprogramm:
program Sortieren_0_verbessert;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils
, System.Generics.Collections
, Test_TArray_QuickSort
in '
Test_TArray_QuickSort.pas';
VAR
S :
String;
MyArr: TArray<
String>;
// !!!
Begin
MyArr:= TArray<
String>.Create('
things', '
SOME', '
some', '
THINGS');
SetLength(MyArr, 5);
MyArr[4]:='
Irgend etwas';
MyTArray.Sort<
String>(MyArr);
For S
in MyArr
Do Write(S, '
');
WriteLn;
ReadLn;
End.
Herzlichen Dank an Euch Alle!
Gruß, Andreas