Да не, тут проще все. У тебя массив h какой длинны? А сортируемый массив какой длинны? А теперь внимательно посмотри на вот этот кусок кода:
Код:
h[1]:=1;
while h[m]<((len-1) div 3) do
begin
h[m+1]:=2*h[m]+1;
m:=m+1;
end;
ЗЫ. При переполнении стека происходит другой эксепшн.