Ну смотри.
Мои массивы Ar1 и Ar2 - это твои shifr и pressure. Только я опять же воспользовался динамическими, т.к. руками просто лень забивать.
Маленькая ремарка - динамические массивы всегда начинаются с 0.
Далее, как я понимаю, во втором массиве расположены значения перепада давления. Соответсвенно, в моей процке Filtr условие для твоих массивов должно выглядеть как
Код:
If pressure[i] >= 5 Then ...
Тут ты также можешь сделать статический массив + счетчик использованных в ном ячеек (мой массив Ar3).
Допустим:
Код:
var
pressure5Count : Integer;
pressure5 : Array [1..16] Of Integer;
procedure TForm1.Filtr;
var
I : Integer;
begin
pressure5Count := 0; // пока массив не заполнен
For I := 1 To 16 Do // перебираем все параметры
If pressure[i] >= 5 Then //твое условие отбора. здесь - парам. > 5
Begin
pressure5Count := pressure5Count + 1; // используем следующую ячейку
pressure5[pressure5Count] := I; // сохранить в новом элементе текущий индекс
End;
end;
Таким образом, при запуску Filtr тмеем переменную pressure5Count, в которой находится кол-во насосов с перепадом давления 5 или больше МПа и заполненный массив с номерами насосов pressure5.
Про вывод. Фактически, мы имеем в pressure5Count кол-во нужных нам насосов. В StringGrid1 мы должны создать соотв. кол-во строк (+1 на заголовок). Нумерация у них начинается с 0. И заголовок тоже надо заполнить. Для твоего случая будет что-то в этом роде:
Код:
procedure TForm1.PrintOut;
var
I : Integer;
begin
StringGrid1.RowCount := pressure5Count + 1; // 1я - заголовок
StringGrid1.Cells[0,0] := 'Шифр';
StringGrid1.Cells[1,0] := 'Парам.';
For I := 1 To pressure5Count Do
Begin
StringGrid1.Cells[0,I] := shifr[pressure5[i]];
StringGrid1.Cells[1,I] := FloatToStr(pressure[pressure5[i]]);
End;
end;
здесь, вроде, все понятно.