For i := 1 to AN do sgRes.Cells[0,i] := st[i] ;
// Пределы поиска по умолчанию:
minPW := 0 ; maxPW := 0 ;
minT := ABS_NULL ; maxT := ABS_NULL ;
end;
procedure TfmCalcNH3Satur.bbChooseClick(Sender: TObject);
begin
if fmGrSub.ChoiceSubstance then begin
paInd.Caption := DM.name_Substance ;
GetLimits ; // Определяем границы поиска
end;
end;
Procedure TfmCalcNH3Satur.GetLimits;
{ ***************************************
** Определяет область определения **
** таблицы, если выбран хладагент: **
*************************************** }
begin
if DM.Num_Substance > 0 then begin
DM.quLimits.ParamByName('id').AsInteger :=
DM.Num_Substance ;
DM.quLimits.Open ;
if DM.quLimits.FieldByName('minT').IsNull then begin
minPW := 0 ; maxPW := 0 ;
minT := ABS_NULL ; maxT := ABS_NULL ;
end
else begin
minT := DM.quLimits.FieldByName('minT').AsFloat ;
maxT := DM.quLimits.FieldByName('maxT').AsFloat ;
minPW := DM.quLimits.FieldByName('minPW').AsFloat;
maxPW := DM.quLimits.FieldByName('maxPW').AsFloat;
end;
DM.quLimits.Close ;
end;
end;
Function TfmCalcNH3Satur.isTInLimits(t :Extended) :Boolean;
begin
if (t >= minT) and (t <= maxT) then Result := true
else begin
ShowMessage ('Значение температуры находится вне
интервала поиска '+
FloatToStr(minT)+' ... '+ FloatToStr(maxT)+' !') ;
Result := false ;
end;
end;
Function TfmCalcNH3Satur.isPwInLimits(p :Extended) :Boolean;
begin
if (p >= minPw) and (p <= maxPw) then Result := true
else begin
ShowMessage ('Значение давления находится вне
интервала поиска '+
FloatToStr(minPw)+' ... '+ FloatToStr(maxPw)+' !') ;
Result := false ;
end;
end;
Function TfmCalcNH3Satur.GetVars(qu :TSQLQuery) :Boolean ;
var i,j :Integer ;
begin
Result := true;
qu.Open ; qu.First ; // Откроем запрос
IF (not qu.Eof) then
For i := 1 to 2 do begin
// результаты запроса передадим в массив:
for j := 1 to AN do iP[j][i] :=
qu.Fields[j].AsFloat ;
qu.Next ;
End
Else begin
Result := false ; ShowMessage('КОНЕЦ НАБОРА !!');
end;
qu.Close ;
end;
procedure TfmCalcNH3Satur.bbSearchTClick(Sender: TObject);
{ *******************************************
** Поиск данных по температуре жидкости **
** (на левой пограничной кривой). **
******************************************* }
Var i :Integer;
begin
t := GetReal(edT.Text) ;
IF isTInLimits(t) then BEGIN
DM.quIntT.ParamByName('id1').AsInteger :=
DM.Num_Substance ;
DM.quIntT.ParamByName('t1').AsFloat := t ;
DM.quIntT.ParamByName('id2').AsInteger :=
DM.Num_Substance ;
DM.quIntT.ParamByName('t2').AsFloat := t ;
if GetVars(DM.quIntT) then begin
if (ip[1][1]=ip[1][2]) then
for i := 1 to AN do iP[i][3] := iP[i][1]
else
for i := 1 to AN do
iP[i][3] := iP[i][1]+
(iP[i][2] - iP[i][1])/(ip[1][2]-ip[1][1])*
(t-ip[1][1]) ;
end;
ShowNumbers ;
END;
end;
procedure TfmCalcNH3Satur.edTExit(Sender: TObject);
begin CheckReal(Sender as TEdit) ; end;
procedure TfmCalcNH3Satur.bbSearchPwClick(Sender: TObject);
{ ****************************************
** Поиск данных по давлению пара **
** (на правой пограничной кривой). **
**************************************** }
var i :Integer;
begin
p := GetReal(edP.Text) ;
IF isPwInLimits(p) then BEGIN
DM.quIntPW.ParamByName('id1').AsInteger :=
DM.Num_Substance ;
DM.quIntPW.ParamByName('p1').AsFloat := p ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.