DM.quIntPW.ParamByName('id2').AsInteger :=
DM.Num_Substance ;
DM.quIntPW.ParamByName('p2').AsFloat := p ;
if GetVars(DM.quIntPW) then begin
if (ip[2][1]=ip[2][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[2][2]-
ip[2][1]) * (p-ip[2][1]) ;
end;
ShowNumbers ;
END;
end;
Procedure TfmCalcNH3Satur.ShowNumbers ;
// Показать числа расчета или поиска
var i :Integer;
begin
for i := 1 to AN do sgRes.Cells[1,i] :=
FloatToStrF(iP[i][3],ffExponent, 7,3)
end;
end.
Форма розрахунку термодинамічних властивостей
сухої перегрітої пари аміаку
Рисунок 8. Зовнішній вигляд форми розрахунку властивостей
сухої перегрітої пари аміаку
unit uSearchSupH;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, Grids, StdCtrls, Buttons, ExtCtrls, SqlExpr;
// К-во отображаемых результатов и всего результатов
Const NN = 5;
type
TfmCalcNH3sh = class(TForm)
paInd: TPanel; Panel2: TPanel; Panel3: TPanel;
bbClose: TBitBtn; Panel4: TPanel; Panel5: TPanel;
Panel6: TPanel; Panel7: TPanel; Panel8: TPanel;
Panel9: TPanel; Panel10: TPanel; Panel11: TPanel;
edP: TEdit; bbChoose: TBitBtn; sgRes: TStringGrid;
bbSearchT: TBitBtn; edT: TEdit;
procedure FormCreate(Sender: TObject);
procedure bbChooseClick(Sender: TObject);
procedure bbSearchTClick(Sender: TObject);
procedure edTExit(Sender: TObject);
private { Private declarations }
// 4 соседние узловые точки
Xmin, Ymin, Xmax, Ymax :Extended ;
p,t, x,y,z :Extended ; // Текущие значения параметров
//------------------------------------------------
// Искомые значения в 4 соседних узловых точках. |
// 0 соответствует номеру точки |
// 1 соответствует x-координате; |
// 2 соответствует y-координате: |
iP :Array[0..NN, 1..4] of Extended ; // |
iR :Array[1..NN] of Extended ; // Результаты |
// имеются ли данные по точке? |
isP :Array[1..4] of boolean; // |
//------------------------------------------------
public
{ Public declarations }
Function GetVars(qu :TSQLQuery) :Integer ;
Procedure InitArr ;
Procedure SqueezeA ;
Function Flatness(i :Integer; x,y :Extended) :Extended;
Procedure CalcProperties ;
Procedure ShowNumbers ;
end;
var fmCalcNH3sh: TfmCalcNH3sh;
implementation uses uFmGr, uDM, DB, uDebug; {$R *.dfm}
procedure TfmCalcNH3sh.FormCreate(Sender: TObject);
Const st :array [1..NN] of string = (
'Давление p, Па', 'Температура t, °C',
'Удельный объем v", м3/кг',
'Удельная энтальпия i"`, Дж/кг',
'Удельная энтропия s", Дж/(кг*K)' );
var i :Integer;
begin
sgRes.ColWidths[0] := 450 ; sgRes.ColWidths[1] := 150 ;
sgRes.Cells[0,0] := 'Показатель' ; sgRes.Cells[1,0] := 'Значение' ;
For i := 1 to NN do sgRes.Cells[0,i] := st[i] ;
InitArr ;
end;
procedure TfmCalcNH3sh.bbChooseClick(Sender: TObject);
begin if fmGrSub.ChoiceSubstance then begin
paInd.Caption := DM.name_Substance ;
end;
end;
Procedure TfmCalcNH3sh.InitArr ;
Var i,j :Integer;
begin Xmin := -1 ; Xmax := Xmin ; Ymin := -273 ;
Ymax := Ymin ;
For i := 1 to 4 do begin
isP[i]:= false; // Точка не определена
For j := 0 to NN do iP[j][i] := -273 ;
end;
end;
Function TfmCalcNH3sh.GetVars(qu :TSQLQuery) :Integer ;
var i,j, nf :Integer ;
begin
// ShowMessage('Вошли в GetVars');
InitArr ; Result := 0;
qu.Open ; qu.First ; nf := qu.FieldCount ;
// ShowMessage('Открыли набор');
while (not qu.Eof) do begin
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.