Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Ersetzen der privaten class procedure QuickSort<T> (. . .) der Klasse TArray

  Alt 29. Feb 2016, 22:08
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

Geändert von Phoenix ( 1. Mär 2016 um 11:51 Uhr) Grund: Delphi-Tags eingefügt. Das nächste mal bitte selber machen.
  Mit Zitat antworten Zitat