Динамический массив сам меняет длинну
При запуске процедуры сортировки массив, бывает, урезает себя или, наборот, добавляет себе ячеек. Почему так и как исправить?
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const N=10;
Type
DArr = array of integer;
var
x,tmp,size:integer;
arr:Darr;
procedure refill(var a:array of integer);
var
i:integer;
begin
randomize;
for i:=0 to high(a) do
a[i]:= random(98)+1;
end;
procedure print(var a:array of integer);
var
i:integer;
begin
for i:=0 to high(a) do
write(a[i],' ');
writeln;
end;
procedure bubble_sort(var a:array of integer; way:integer);//way нужен в дальнейшем
var
i,j,tmp:integer;
flag:boolean;
begin
for i:=0 to high(a) do
begin
for j:=high(a) downto i do
if a[j-1]>a[j] then
begin
tmp:=a[j-1];
a[j-1]:=a[j];
a[j]:=tmp;
end;
end;
end;
begin
x:=11;
SetLength(arr,N);
size:=High(arr);
refill(arr);
while x<>0 do
begin
writeln('1.Bubble');
writeln('2.Refill');
writeln('3.Print');
writeln('0.Exit');
readln(x);
case x of
1:
begin
write('Up=1; Down=2: ');
readln(tmp);
bubble_sort(arr,tmp);
print(arr);
end;
2:
refill(arr);
3:
print(arr);
end;
end;
SetLength(Arr,0);
Finalize(Arr);
{ TODO -oUser -cConsole Main : Insert code here }
end.
Источник: Stack Overflow на русском