Показать сообщение отдельно
  #4  
Старый 21.04.2008, 14:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну смотри.
Мои массивы 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;

здесь, вроде, все понятно.
Ответить с цитированием