{ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ }
{ Programm SOL_DEL2 Compiler: Delphi2 }
{ 12.03.1999 }
{ Beispielprogramm zum Import thermophysikalischer Stoffdaten- }
{ funktionen aus der Bibliothek REF_CALC.DLL. }
{ Die Importdeklarationen der Funktionen sind in der }
{ Unit ImportD.pas enthalten. }
{ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ }

unit Test_ob;

interface

uses
Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
ComboBox1: TComboBox;
Label1: TLabel;
ComboBox2: TComboBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label6: TLabel;
Label7: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Panel2: TPanel;
Label8: TLabel;
Panel3: TPanel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Edit6: TEdit;
Label16: TLabel;
Label17: TLabel;
Bevel1: TBevel;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private-Deklarationen }
Function FFormatValue(Value: double; Prec: Integer; ME: String): String;
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses ImportD; {Unit enthдlt Importdeklarationen}

Const
A_ME : Array[1..34] of String =
('g/mol', 'K', 'K', 'Pa', 'mі/kg', 'Pa', 'Pa', 'K','K', 'mі/kg',
'mі/kg', 'Pa', 'K', 'J/kg', 'J/kg', 'J/kg' , 'J/(kgK)', 'J/(kgK)', 'J/(kgK)', 'K',
'K', 'J/(kgK)', 'J/(kgK)', 'J/(kgK)', 'J/(kgK)', 'J/(kgK)', 'N/m', 'W/(m K)', 'W/(m K)','',
'', 'm/s', 'Pa s', 'Pa s');
A_Res : Array[1..34] of String =
('Molar mass', 'Triple temperature', 'Crit. temperature', 'Crit. pressure',
'Crit. volume', 'Bubble pressure', 'Dew pressure','Bubble temperature',
'Dew temperature', 'Spec. liquid volume', 'Spec. vapour volume', 'Pressure, vapour',
'Temperature, vapour', 'Spec. liquid enthalpy', 'Spec. vapour enthalpy', 'Spec. vapour enthalpy',
'Spec. liquid entropy', 'Spec. vapour entropy', 'Spec. vapour entropy', 'Temperature, vapour',
'Temperature, vapour', 'Spec. heat cap., liquid', 'Spec. heat cap., v=const', 'Spec. heat cap., v=const',
'Spec. heat cap., p=const', 'Spec. heat cap., p=const', 'Surface tension', 'Heat conductivity, liquid',
'Heat conductivity, vapour', 'Isentropic exponent', 'Isentropic exponent', 'Velocity of sound',
'Dynamic viscosity, liquid', 'Dynamic viscosity, vapour');



Function TForm1.FFormatValue(Value: double; Prec: Integer; ME: String): String;
var FFormatS : String; {Formatting of results}
nPrec : Integer;
dDummy : double;
begin
if Abs(Value) < 0.1 then
begin
FFormatS := '%.' + IntTostr(nPrec) + 'g';
FFormatValue:= Format(FFormatS, [Value]) + ' ' + ME;
Exit;
end;
try
FFormatValue:= FloatToStr(Value) + ' ' + ME;
dDummy:= 1/Value;
except
on EZeroDivide do Exit;
on EConvertError do Exit;
end;
nPrec:= Trunc(ln(Abs(Value))/ln(10));
if nPrec < 0 then nPrec:= 0;
nPrec:= Prec - nPrec;
if nPrec < 0 then nPrec:= 0;
FFormatS := '%.' + IntTostr(nPrec) + 'f';
FFormatValue:= Format(FFormatS, [Value]) + ' ' + ME;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox2.ItemIndex:= 1;
ComboBox2Change(Sender);
end;

procedure TForm1.Button1Click(Sender: TObject);
{Calculation of the Function.
The Refrigerant is selected via ComboBox1; the Function is selected via ComboBox2}
{Berechnung einer Funktion.
Kдltemittel und Fuktion sind mittels ComboBox1 bzw. ComboBox2 ausgewдhlt}
var _pres, _temp,res,_volu,_enth,_entr,t : double; {Variables/ Variablen}
refr,timestring : String;
ref,ver : pChar; {Nullterminated strings for refrigerant name
and version message}
RBuffer : Array[0..255] of Char;
hfiles : array[1..50] of string;
herr : string;
ierr : byte;
err : Boolean; {Return parameter of Functions (Error state)}
i, prec : Integer;
ME : String;

begin
_temp := StrToFloat(Edit1.text); {Values of independet variables}
_pres := StrToFloat(Edit2.text);
_volu := StrToFloat(Edit3.text);
_enth := StrToFloat(Edit4.text);
_entr := StrToFloat(Edit5.text);
refr := ComboBox1.text; {Refrigerant selection}
StrPCopy(RBuffer, lowercase(refr)); {Conversion Pascal string -> pChar}
ref := RBuffer;

prec := StrToInt(Edit6.Text);
try
Case ComboBox2.itemindex of {Calculation of selected Function}
0 : err := S_revision(ver);
1 : err := S_molmas(ref,res);
2 : err := S_freez(ref,res);
3 : err := S_tc(ref,res);
4 : err := S_pc(ref,res);
5 : err := S_vc(ref,res);
6 : err := S_p_b(ref,_temp,res);
7 : err := S_p_d(ref,_temp,res);
8 : err := S_t_b(ref,_pres,res);
9 : err := S_t_d(ref,_pres,res);
10 : err := S_v_l(ref,_temp,res);
11 : err := S_v_v(ref,_temp,_pres,res);
12 : err :=S_p_v_v(ref,_temp,_volu,res);
13 : err :=S_t_v_v(ref,_pres,_volu,res);
14 : err := S_h_l(ref,_temp,res);
15 : err := S_h_v(ref,_temp,_pres,res);
16 : err := S_h_v_v(ref,_temp,_volu,res);
17 : err := S_s_l(ref,_temp,res);
18 : err := S_s_v(ref,_temp,_pres,res);
19 : err := S_s_v_v(ref,_temp,_volu,res);
20 : err := S_f_entro(ref,_pres,_entr,res);
21 : err := S_f_entha(ref,_pres,_enth,res);
22 : err := S_cp_l(ref,_temp,res);
23 : err := S_cv(ref,_temp,_pres,res);
24 : err := S_cv_v(ref,_temp,_volu,res);
25 : err := S_cp(ref,_temp,_pres,res);
26 : err := S_cp_v(ref,_temp,_volu,res);
27 : err := S_sigma_l(ref,_temp,res);
28 : err := S_lambda_l(ref,_temp,res);
29 : err := S_lambda_v(ref,_temp,_pres,res);
30 : err := S_kappa(ref,_temp,_pres,res);
31 : err := S_kappa_v(ref,_temp,_volu,res);
32 : err := S_vs(ref,_temp,_pres,res);
33 : err := S_visc_l(ref,_temp,res);
34 : err := S_visc_v(ref,_temp,_pres,res);
35 :
begin
hfiles[1] := 'R134a.fld';
hfiles[2] := 'R125.fld';
hfiles[3] := 'R32.fld';
setup (1, hfiles, 'HMX.bnc', 'IIR', ierr,herr);
if ierr <> 0 then err := true else err := false;
end
else Raise Exception.Create('');
end; {of case}
except
on Exception do begin
MessageDlg('Invalid function call.', mtError, [mbOK], 0);
Exit;
end;
end;

if err = false then
begin
Panel3.Font.Color := clGreen; {No error occured.}
Panel3.Caption := 'FALSE' ;
Case ComboBox2.itemindex of
0 : Label17.Caption:= StrPas(Ver);
1..31: ME:= A_ME[ComboBox2.itemindex];
Else ME := '';
end;
if ComboBox2.itemindex = 0
then Panel2.caption := ver
else Panel2.caption := FFormatValue(res, prec, ME); {Output of results}
end
else
begin
Panel2.caption := '';
Panel3.font.color := clRed; {Error occured.}
Panel3.caption := 'TRUE';
end;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then Button1Click(Self);
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
Case ComboBox2.itemindex of
1..31: Label16.Caption:= A_Res[ComboBox2.itemindex];
Else Label16.Caption:= '';
end;
Button1Click(Sender);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

end.
Соседние файлы в папке Sol_Del2
  • #
    25.04.2015194 б13SOL_Del2.dpr
  • #
    25.04.20151.07 Кб13SOL_Del2.res
  • #
    25.04.2015194 б13SOL_Del2.~dp
  • #
    25.04.201512.18 Кб13TEST_OB.DCU
  • #
    25.04.20156.9 Кб13Test_ob.dfm
  • #
    25.04.20158.61 Кб13Test_ob.pas
  • #
    25.04.20156.89 Кб13Test_ob.~df
  • #
    25.04.20158.55 Кб13Test_ob.~pa
  • #
    25.04.20152.85 Кб13Unit2.dcu