Странно, у меня работает:
Код:
type
TDate = record
Y: integer;
M: integer;
D: integer;
end;
TDates = array of TDate;
var
D: TDates;
procedure Sort;
var
i, k: integer;
flag: boolean;
t: TDate;
begin
k := 1;
repeat
flag := true;
for i := 0 to High(D) - k do
if (D[i].Y * 1000 + D[i].M * 10 + D[i].D) > (D[i + 1].Y * 1000 + D[i + 1].M * 10 + D[i + 1].D) then begin
t := D[i];
D[i] := D[i + 1];
D[i + 1] := t;
flag := false;
end;
inc(k);
until flag = true;
end;