⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apz.~pas

📁 以从医院病案室获得的3022例数据为样本
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
     else
       item.subitems.Add('是')  ;
end;

procedure judge4(z,ib,g:integer;liename1,liename2,liename3,liename4:string;var countofD:integer;var D:array of string); //判断四项冗余项的嵌套过程
begin                                                                      //细心:var D:array of string
 if (ib>=g)                                   //如果并发数小于g,判定为冗余项
     then
     begin
     item.subitems.Add('否') ;
     D[4*countofD]:=liename1   ;
     D[4*countofD+1]:=liename2;
     D[4*countofD+2]:=liename3;
     D[4*countofD+3]:=liename4;
     countofD:=z+1   ;
     end
     else
       item.subitems.Add('是')  ;
end;

procedure judge5(z,ib,g:integer;liename1,liename2,liename3,liename4,liename5:string;var countofE:integer;var E:array of string); //判断五项冗余项的嵌套过程
begin                                                                      //细心:var E:array of string
 if (ib>=g)                                   //如果并发数小于g,判定为冗余项
     then
     begin
     item.subitems.Add('否') ;
     E[5*countofE]:=liename1   ;
     E[5*countofE+1]:=liename2;
     E[5*countofE+2]:=liename3;
     E[5*countofE+3]:=liename4;
     E[5*countofE+4]:=liename5;
     countofE:=z+1   ;
     end
     else
       item.subitems.Add('是')  ;
end;

procedure judge6(z,ib,g:integer;liename1,liename2,liename3,liename4,liename5,liename6:string;var countofF:integer;var F:array of string); //判断五项冗余项的嵌套过程
begin                                                                      //细心:var E:array of string
 if (ib>=g)                                   //如果并发数小于g,判定为冗余项
     then
     begin
     item.subitems.Add('否') ;
     F[6*countofE]:=liename1   ;
     F[6*countofE+1]:=liename2;
     F[6*countofE+2]:=liename3;
     F[6*countofE+3]:=liename4;
     F[6*countofE+4]:=liename5;
     F[6*countofE+5]:=liename6;
     countofF:=z+1   ;
     end
     else
       item.subitems.Add('是')  ;
end;

begin                                            //主程序的开始位置
if  editgate.Text=''
  then
   messagedlg('请输入域值',mtError,[mbok],0)
else
 try
   with adoquery1 do
   begin
   g:=strtoint(editgate.Text);
     sql.clear;
     sql.add('select * from tjE_g ');
     open;
     listview1.Items.BeginUpdate;                 //开始更新
     try
     listview1.items.clear;
     setvalue(re,ig,il,zxd,ibl,i,ib);
       itnb:=0;

first;
  while not eof do          //是否读到dataset的最后一条记录
begin                        //计算糖尿病患者总数
if (fieldbyname('tnb').AsVariant='1')
         then
           itnb:=itnb+1
         else
            itnb:=itnb;
       next;               //读dataset的下一条记录
     end   ;


countofA:=0;
Setlength(A,50);
for  v:=0 to 40 do                            //按列扫描(单列扫描)
begin
first;                //返回dataset的第一条记录
      while not eof do                        //按行扫描
      begin
      onelie(i,ib,lie1array[v],i,ib)  ;
      next
       end;
       if (i<>0)  then
    transtr(i,ib,itnb,ibl,zxd,il,j,jil,jib,jibl,jzxd);
    item := listview1.items.add;
     fillTable(lie1array[v],j,jil,jib,jibl,jzxd);
     judge1(countofA,ib,g,lie1array[v],countofA,A);
    setvalue(re,ig,il,zxd,ibl,i,ib);
end;                                     //此时A中有(countA)个元素


k:=-1;
Setlength(H,1000);
for m:=0 to countofA-1 do      //由A产生侯选项数组H (1->2)
begin
   for n:=m+1 to countofA-1 do                   //保证没有重项
   begin
   k:=k+1;
   H[2*k]:=A[m];
   H[2*k+1]:=A[n];
   end;
  end;


countofB:=0;
Setlength(B,1000);
for  v:=0 to k do                            //按列扫描 (双列扫描)
begin
first;                //返回dataset的第一条记录
      while not eof do                        //按行扫描
      begin
      twolie(i,ib,H[2*v],H[2*v+1],i,ib)  ;
      next
       end;
       if (i<>0)  then
    transtr(i,ib,itnb,ibl,zxd,il,j,jil,jib,jibl,jzxd);
    item := listview1.items.add;
     fillTable(H[2*v]+'&'+H[2*v+1],j,jil,jib,jibl,jzxd);
     judge2(countofB,ib,g,H[2*v],H[2*v+1],countofB,B);
    setvalue(re,ig,il,zxd,ibl,i,ib);
end;                                      //此时B中有2*(countB)个元素


k:=-1;
Setlength(H,1000);
for v:=0 to 999 do
H[v]:='';                                   //初始化H
for m:=0 to countofB-1 do                            //由B产生侯选项数组H (2->3)
begin
   for n:=m+1 to countofB-1 do
   begin
   if B[2*m]=B[2*n]
   then
   begin
   k:=k+1;
   H[3*k]:=B[2*m];
   H[3*k+1]:=B[2*m+1];
   H[3*k+2]:=B[2*n+1];
   end;
   end;
  end;

countofC:=0;
Setlength(C,1000);
for  v:=0 to k do                            //按列扫描 (三列扫描)
begin
first;                //返回dataset的第一条记录
      while not eof do                        //按行扫描
      begin
      threelie(i,ib,H[3*v],H[3*v+1],H[3*v+2],i,ib)  ;
      next
       end;
       if (i<>0)  then
    transtr(i,ib,itnb,ibl,zxd,il,j,jil,jib,jibl,jzxd);
    item := listview1.items.add;
     fillTable(H[3*v]+'&'+H[3*v+1]+'&'+H[3*v+2],j,jil,jib,jibl,jzxd);
     judge3(countofC,ib,g,H[3*v],H[3*v+1],H[3*v+2],countofC,C);
    setvalue(re,ig,il,zxd,ibl,i,ib);
end;                                      //此时C中有3*(countC)个元素

k:=-1;
Setlength(H,1000);
for v:=0 to 999 do
H[v]:='';                                   //初始化H
for m:=0 to countofC-1 do                            //由C产生侯选项数组H (3->4)
begin
   for n:=m+1 to countofC-1 do
   begin
   if (C[3*m]=C[3*n])and (C[3*m+1]=C[3*n+1])
   then
   begin
   k:=k+1;
   H[4*k]:=C[3*m];
   H[4*k+1]:=C[3*m+1];
   H[4*k+2]:=C[3*m+2];
   H[4*k+3]:=C[3*n+2];
   end;
   end;
  end;

countofD:=0;
Setlength(D,1000);
for  v:=0 to k do                            //按列扫描 (四列扫描)
begin
first;                //返回dataset的第一条记录
      while not eof do                        //按行扫描
      begin
      fourlie(i,ib,H[4*v],H[4*v+1],H[4*v+2],H[4*v+3],i,ib)  ;
      next
       end;
       if (i<>0)  then
    transtr(i,ib,itnb,ibl,zxd,il,j,jil,jib,jibl,jzxd);
    item := listview1.items.add;
     fillTable(H[4*v]+'&'+H[4*v+1]+'&'+H[4*v+2]+'&'+H[4*v+3],j,jil,jib,jibl,jzxd);
     judge4(countofD,ib,g,H[4*v],H[4*v+1],H[4*v+2],H[4*v+3],countofD,D);
    setvalue(re,ig,il,zxd,ibl,i,ib);
end;                                      //此时D中有4*(countD)个元素

k:=-1;
Setlength(H,1000);
for v:=0 to 999 do
H[v]:='';                                   //初始化H
for m:=0 to countofD-1 do                            //由D产生侯选项数组H (4->5)
begin
   for n:=m+1 to countofD-1 do
   begin
   if (D[4*m]=D[4*n])and (D[4*m+1]=D[4*n+1])and(D[4*m+2]=D[4*n+2])
   then
   begin
   k:=k+1;
   H[5*k]:=D[4*m];
   H[5*k+1]:=D[4*m+1];
   H[5*k+2]:=D[4*m+2];
   H[5*k+3]:=D[4*m+3];
   H[5*k+4]:=D[4*n+3];
   end;
   end;
  end;

countofE:=0;
Setlength(E,1000);
for  v:=0 to k do                            //按列扫描 (五列扫描)
begin
first;                //返回dataset的第一条记录
      while not eof do                        //按行扫描
      begin
      fivelie(i,ib,H[5*v],H[5*v+1],H[5*v+2],H[5*v+3],H[5*v+4],i,ib)  ;
      next
       end;
       if (i<>0)  then
    transtr(i,ib,itnb,ibl,zxd,il,j,jil,jib,jibl,jzxd);
    item := listview1.items.add;
     fillTable(H[5*v]+'&'+H[5*v+1]+'&'+H[5*v+2]+'&'+H[5*v+3]+'&'+H[5*v+4],j,jil,jib,jibl,jzxd);
     judge5(countofE,ib,g,H[5*v],H[5*v+1],H[5*v+2],H[5*v+3],H[5*v+4],countofE,E);
    setvalue(re,ig,il,zxd,ibl,i,ib);
end;                                      //此时E中有5*(countE)个元素

k:=-1;
Setlength(H,1000);
for v:=0 to 999 do
H[v]:='';                                   //初始化H
for m:=0 to countofE-1 do                            //由E产生侯选项数组H (5->6)
begin
   for n:=m+1 to countofE-1 do
   begin
   if (E[5*m]=E[5*n])and (E[5*m+1]=E[5*n+1])and(E[5*m+2]=E[5*n+2])and(E[5*m+3]=E[5*n+3])
   then
   begin
   k:=k+1;
   H[6*k]:=E[5*m];
   H[6*k+1]:=D[5*m+1];
   H[6*k+2]:=D[5*m+2];
   H[6*k+3]:=D[5*m+3];
   H[6*k+4]:=D[5*m+4];
   H[6*k+5]:=D[5*n+4];
   end;
   end;
  end;

countofF:=0;
Setlength(F,1000);
for  v:=0 to k do                            //按列扫描 (6列扫描)
begin
first;                //返回dataset的第一条记录
      while not eof do                        //按行扫描
      begin
      sixlie(i,ib,H[6*v],H[6*v+1],H[6*v+2],H[6*v+3],H[6*v+4],H[6*v+5],i,ib)  ;
      next
       end;
       if (i<>0)  then
    transtr(i,ib,itnb,ibl,zxd,il,j,jil,jib,jibl,jzxd);
    item := listview1.items.add;
     fillTable(H[6*v]+'&'+H[6*v+1]+'&'+H[6*v+2]+'&'+H[6*v+3]+'&'+H[6*v+4]+'&'+H[6*v+5],j,jil,jib,jibl,jzxd);
     judge6(countofF,ib,g,H[6*v],H[6*v+1],H[6*v+2],H[6*v+3],H[6*v+4],H[6*v+5],countofF,F);
    setvalue(re,ig,il,zxd,ibl,i,ib);
end;                                      //此时F中有6*(countF)个元素




    except
     listview1.items.Clear;
     messagedlg('运行出错',mtError,[mbok],0);
   end  ;
 end;



   finally
    Listview1.Items.EndUpdate;                     //结束更新
end;
edit1.Text:=inttostr(countofA);
edit2.Text:=inttostr(countofB);
edit3.Text:=inttostr(countofC);
edit4.Text:=inttostr(countofD);
edit5.Text:=inttostr(countofE);
edit6.Text:=inttostr(Listview1.Items.Count);
edit7.Text:=inttostr(itnb);
end;






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

procedure TForm1.Button3Click(Sender: TObject);            //复位过程
begin
editgate.Text:='';
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
edit7.Text:='';
listview1.items.Clear;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -