надо написать прогу отсортировывающую кубики по цветам, а внутри одного цвета по размеру

const
maxCubes = 10;
type
TCube = record
color: byte;
size: double;
end;
TList = Array[1 .. maxCubes] of TCube;
function Compare (T1, T2: TCube): integer;
begin
if T1.Color > T2.Color then Compare := 1
else
if T1.Color = T2.Color then begin
if T1.size > T2.size then Compare := 1
else
if T1.size < T2.size then Compare := -1
else Compare := 0
end
else Compare := -1
end;
procedure QuickSort (var A: TList; Lo, Hi: Integer);
var
i,j: integer;
x, y: TCube;
procedure Sort (l, r: Integer);
begin
repeat
x := A[(l+r) shr 1];
i := l; j := r;
repeat
while Compare( A[i], x ) < 0 do inc(i);
while Compare( A[j], x ) > 0 do dec(j);
if i <= j then begin
y := A[i]; A[i] := A[j]; A[j] := y;
inc(i); dec(j);
end;
until i > j;
if l < j then Sort (l, j);
l := i;
until l >= r;
end;
begin
Sort (Lo,Hi);
end;
begin
{ ... }
end.