📄 listnadata.~pas
字号:
unit ListNaData;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,NaConcentration,AryClass;
type
TFormNaList = class(TForm)
ListViewNaCon: TListView;
BtRun: TButton;
BtViewCurve: TButton;
ListViewSelect: TListView;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
EditGtNa: TEdit;
Label4: TLabel;
Label5: TLabel;
EditGtVol: TEdit;
Label6: TLabel;
BtClose: TButton;
procedure BtRunClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormNaList: TFormNaList;
AryNaConTime,AryGluConTime,AryNaMolTime,AryGluMolTime,AryQuTime,AryVolTime:TRealDynThrArray;
//钠离子、葡萄糖浓度、钠离子量、葡萄糖量、超滤率(Qu)、溶剂体积量随时间变化,
//第一维变量为起始钠离子浓度,第二维变量为起始葡萄糖浓度,第三维变量为存腹时间的变化
AryTotalNa,AryTotalVol:TRealDynTwoArray; //对应于每种起始Na浓度和葡萄糖浓度的Na、水的总清除量
i,j,m,n,k: Integer; //数组指针
implementation
{$R *.dfm}
procedure TFormNaList.BtRunClick(Sender: TObject);
var
GluSiftPara,NaSiftPara:Real; //钠离子和葡萄糖的筛系数;
GluRefPara,NaRefPara:Real; //钠离子和葡萄糖的反射系数;
LpsRt:Real; //LPS*RT的值
Qa:Real; //重吸收率
GtNa,GtVol:Real; //选出的允许误差范围
Item,ItemSe: TListItem; // 动态item
begin
GluSiftPara:=0.96115;
NaSiftPara:=0.97472;
GluRefPara:=0.025458;
NaRefPara:=0.010978;
LpsRt:=0.08*19.3*1000;
Qa:=1;
GtNa:=StrToFloat(EditGtNa.Text);
GtVol:=StrToFloat(EditGtVol.Text);
/////////////////////////////////////////////////////////////////////////////
//确定透析液中各离子浓度(单位:mmol/mL)
j:=0;
m:=0;
for j:=0 to (NumPDNaC-1) do
begin
for m:=0 to (NumPDGlusC-1) do
begin
AryVolTime[j,m,0]:=2000;
AryGluConTime[j,m,0]:=AryPDSGlucoseCon[m];
AryNaConTime[j,m,0]:=AryPDSNaCon[j];
AryGluMolTime[j,m,0]:=AryGluConTime[j,m,0]*AryVolTime[j,m,0];
AryNaMolTime[j,m,0]:=AryNaConTime[j,m,0]*AryVolTime[j,m,0];
AryQuTime[j,m,0]:=LpsRt*(GluRefPara*(AryGluConTime[j,m,0]-AryBloodCon[1])+NaRefPara*(AryNaConTime[j,m,0]-AryBloodCon[0]));
end;
end;
//Edit1.Text:=FloattoStr(NumPDNaC) ;
j:=0;
m:=0;
i:=0;
for j:=0 to (NumPDNaC-1) do
begin
for m:=0 to (NumPDGlusC-1) do
begin
for i:=1 to 900 do //假定最长的一袋存腹时间为900min
begin
AryGluMolTime[j,m,i]:=AryGluMolTime[j,m,i-1]+1*(15.3/1.5*(AryBloodCon[1]-AryGluConTime[j,m,i-1])+0.50*GluSiftPara*AryQuTime[j,m,i-1]*AryBloodCon[1]-GluSiftPara*Qa*AryGluConTime[j,m,i-1]-0.3*AryGluConTime[j,m,i-1]);
AryNaMolTime[j,m,i]:=AryNaMolTime[j,m,i-1]+1*(27.9/1.5*(AryBloodCon[0]-AryNaConTime[j,m,i-1])+0.50*NaSiftPara*AryQuTime[j,m,i-1]*AryBloodCon[0]-NaSiftPara*Qa*AryNaConTime[j,m,i-1]-0.3*AryNaConTime[j,m,i-1]);
AryGluConTime[j,m,i]:=AryGluMolTime[j,m,i]/AryVolTime[j,m,i-1];
AryNaConTime[j,m,i]:=AryNaMolTime[j,m,i]/AryVolTime[j,m,i-1];
AryQuTime[j,m,i]:=LpsRt*(GluRefPara*(AryGluConTime[j,m,i]-AryBloodCon[1])+NaRefPara*(AryNaConTime[j,m,i]-AryBloodCon[0]));
AryVolTime[j,m,i]:=AryVolTime[j,m,i-1]+1*(AryQuTime[j,m,i]-Qa-0.3);
end;
AryTotalNa[j,m]:=(AryNaMolTime[j,m,AryDepTime[0]]+AryNaMolTime[j,m,AryDepTime[1]]+AryNaMolTime[j,m,AryDepTime[2]]+AryNaMolTime[j,m,AryDepTime[3]]-AryNaMolTime[j,m,0]*4)*58.5/1000+AryNaOut[0]+AryNaOut[3];
AryTotalVol[j,m]:=AryVolTime[j,m,AryDepTime[0]]+AryVolTime[j,m,AryDepTime[1]]+AryVolTime[j,m,AryDepTime[2]]+AryVolTime[j,m,AryDepTime[3]]-2000*4+AryNaOut[1];
end;
end;
//Edit1.Text:=FloattoStr(AryTotalVol[31]);
////////////////////////////////////////////////////////////////////////////
try
ListViewNaCon.Items.BeginUpdate; //开始更新
ListViewSelect.Items.BeginUpdate;
try
ListViewNaCon.items.clear;
ListViewSelect.items.clear;
j:=0;
m:=0;
n:=0;
for j:=0 to (NumPDNaC-1) do
begin
for m:=0 to (NumPDGlusC-1) do
begin
n:=n+1;
Item:=ListViewNaCon.items.add;
Item.caption:=IntToStr(n);
Item.subitems.Add(FloatToStr(AryNaConTime[j,m,0]*1000)) ;
Item.subitems.Add(FloatToStr(AryGluConTime[j,m,0]*1000)) ;
Item.subitems.Add(FloatToStr(AryTotalNa[j,m])) ;
Item.subitems.Add(FloatToStr(AryTotalVol[j,m]));
k:=0;
for k:=0 to (NumNaIn-1) do
begin
if ((AryNaSIn[k]*(1-GtNa/100))<AryTotalNa[j,m])and(AryTotalNa[j,m]<AryNaSIn[k]*(1+GtNa/100))and(1000*(1-GtVol/100)<AryTotalVol[j,m])and(AryTotalVol[j,m]<1000*+(1+GtVol/100))
then begin
ItemSe:=ListViewSelect.items.add;
ItemSe.caption:=IntToStr(n);
ItemSe.subitems.Add(FloatToStr(AryNaConTime[j,m,0]*1000)) ;
ItemSe.subitems.Add(FloatToStr(AryGluConTime[j,m,0]*1000)) ;
ItemSe.subitems.Add(FloatToStr(AryTotalNa[j,m])) ;
ItemSe.subitems.Add(FloatToStr(AryTotalVol[j,m]));
end;
end;
end;
end;
except
ListViewNaCon.items.Clear;
ListViewSelect.items.Clear;
messagedlg('运行出错',mtError,[mbok],0);
end ;
finally
ListViewNaCon.Items.EndUpdate; //结束更新
ListViewSelect.Items.EndUpdate;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -