holysh писал(а):добавлю цельІй код:
Если бы я сказал, что с этого следовало начинать, это была бы неправда, потому что начинать следовало бы с текста задания, к которому приложен текущий проект, чтобы помогальщикам, если таковые найдутся не нужно было рассовывать кнопочки по формочкам.
Что же мы видим: имеется статический массив 
А[1..100], который заполняется частично, начиная с 
нулевого индекса, но сортируется всегда целиком. Если в параметрах проекта включить проверку диапазона, это даже не скомпилируется.
Предлагаю заменить статический массив динамическим, ну и сортировки лучше вынести в отдельные процедуры, принимающие открытый массив, тогда не нужен будет Generics.Collections.
- Код: Выделить всё
- var
 Form1: TForm1;
 
 A: array of Integer;
 
 procedure Sort(var a: array of Integer);
 procedure SortDesc(var a: array of Integer);
 
 implementation
 
 {$R *.lfm}
 
 { TForm1 }
 
 procedure Sort(var a: array of Integer);
 var
 i, j, temp: Integer;
 begin
 // Сортировка массива A по росту
 for i := 0 to High(a)-1 do
 for j := i + 1 to High(a) do
 if a[i] > a[j] then
 begin
 temp := a[i];
 a[i] := a[j];
 a[j] := temp;
 end;
 end;
 
 procedure SortDesc(var a: array of Integer);
 var
 i, j, temp: Integer;
 begin
 // Сортировка массива А по убьІванию
 for i := 0 to High(a)-1 do
 for j := i + 1 to High(a) do
 if a[i] < a[j] then
 begin
 temp := a[i];
 a[i] := a[j];
 a[j] := temp;
 end;
 end;
 
 procedure TForm1.Button2Click(Sender: TObject);
 var
 i: Integer;
 begin
 Sort(A);
 // ВьІвод отсортированного массива A в ListBox2
 ListBox2.Clear;
 for i := 0 to High(A) do
 ListBox2.Items.Add(IntToStr(A[i]));
 end;
 
 procedure TForm1.Button3Click(Sender: TObject);
 var
 i: Integer;
 begin
 SortDesc(A);
 // ВьІвод отсортированного массива А в ListBox2
 ListBox2.Clear;
 for i := 0 to High(A) do
 ListBox2.Items.Add(IntToStr(A[i]));
 end;
 
 procedure TForm1.Button4Click(Sender: TObject);
 var
 i, half: Integer;
 begin
 if Length(A) > 1 then
 begin
 half := Length(A) div 2;
 Sort(A[0..half-1]);
 SortDesc(A[half..High(A)]);
 ListBox2.Clear;
 for i := 0 to High(A) do
 ListBox2.Items.Add(A[i].ToString);
 end;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 var
 i, count: Integer;
 begin
 // Получение кол-ва чисел с Edit1
 count := StrToIntDef(Edit1.Text, 0);
 
 // Проверка на допустимость кол-ва чисел
 if (count > 0) and (count <= 100) then
 begin
 SetLength(A, count);
 // Заполнение массива A ограниченньІм кол-вом чисел
 for i := 0 to High(A) do
 begin
 if i mod 2 = 0 then
 A[i] := Random(101) // положительньІе числа для парньІх позиций
 else
 A[i] := -Random(101); // отрицательньІе числа для непарньІх позиций
 end;
 
 // ВьІвод ограниченного массива A в ListBox1
 ListBox1.Clear;
 for i := 0 to High(A) do
 ListBox1.Items.Add(IntToStr(A[i]));
 end
 else
 ShowMessage('Введите значение количества (от 1 до 100).');
 end;
 
 end.
 
Как-то так, при условии, что я правильно понял задание.