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

📄 elec.~pas

📁 自己编写有关电路计算方面的DELPHI 程序
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
     else
        showmessage('节点J标号置入错误,重新输入节点J标号');
     if TryStrToInt(trim(StringGrid2.Cells[2,row_select]),v) then
        k:=v
     else
        showmessage('节点K标号置入错误,重新输入节点K标号');
     if TryStrToInt(trim(StringGrid2.Cells[3,row_select]),w) then                                                     {取下标}
        f:=w
     else
        showmessage('节点F标号置入错误,重新输入节点F标号');
     if TryStrToInt(trim(StringGrid2.Cells[4,row_select]),z) then
        t:=z
     else
        showmessage('节点T标号置入错误,重新输入节点T标号');
     if TryStrToInt(trim(StringGrid2.Cells[5,row_select]),z) then
        m:=h
     else
        showmessage('数据M置入错误,重新输入数据M');

     if (k < SpinEdit1.Value+5) and (j  < SpinEdit1.Value+5) and (f  < SpinEdit1.Value+5) and (t  < SpinEdit1.Value+5)then
       begin
         Y[j,f]:=Y[j,f]+(D[row_select-1]*D[m-1]);
         Y[j,t]:=Y[j,t]-(D[row_select-1]*D[m-1]);
         Y[k,f]:=Y[k,f]-(D[row_select-1]*D[m-1]);
         Y[k,t]:=Y[k,t]+(D[row_select-1]*D[m-1]);


          StringGrid3.Cells[j,f]:=floattostr(Y[j,f]);
          StringGrid3.Cells[j,t]:=floattostr(Y[j,t]);
          StringGrid3.Cells[k,f]:=floattostr(Y[k,f]);
          StringGrid3.Cells[k,t]:=floattostr(Y[k,t]);

          for i:=0 to stringgrid3.ColCount-1 do
          stringgrid3.cells[0,i]:=IntToStr(i);
          for i:=0 to stringgrid3.RowCount-1 do
            stringgrid3.cells[i,0]:=IntToStr(i);
          stringgrid3.cells[0,0]:='';
       end
     else
       showmessage('数组下标越界,重新输入节点标号');

end;


{电压控制电流源}
procedure TForm1.N4Click(Sender: TObject);
var
   i,u,v,w,z:integer;

begin

     StringGrid2.Cells[6,row_select]:= N4.Caption ;
     if TryStrToInt(trim(StringGrid2.Cells[1,row_select]),u) then                                                     {取下标}
        j:=u
     else
        showmessage('节点J标号置入错误,重新输入节点J标号');
     if TryStrToInt(trim(StringGrid2.Cells[2,row_select]),v) then
        k:=v
     else
        showmessage('节点K标号置入错误,重新输入节点K标号');
     if TryStrToInt(trim(StringGrid2.Cells[3,row_select]),w) then                                                     {取下标}
        f:=w
     else
        showmessage('节点F标号置入错误,重新输入节点F标号');
     if TryStrToInt(trim(StringGrid2.Cells[4,row_select]),z) then
        t:=z
     else
        showmessage('节点T标号置入错误,重新输入节点T标号');

     if (k < SpinEdit1.Value+5) and (j  < SpinEdit1.Value+5) and (f  < SpinEdit1.Value+5) and (t  < SpinEdit1.Value+5)then
     begin
     Y[j,f]:=Y[j,f]+D[row_select-1];
     Y[j,t]:=Y[j,t]-D[row_select-1];
     Y[k,f]:=Y[k,f]-D[row_select-1];
     Y[k,t]:=Y[k,t]+D[row_select-1];


     StringGrid3.Cells[j,f]:=floattostr(Y[j,f]);
     StringGrid3.Cells[j,t]:=floattostr(Y[j,t]);
     StringGrid3.Cells[k,f]:=floattostr(Y[k,f]);
     StringGrid3.Cells[k,t]:=floattostr(Y[k,t]);

      for i:=0 to stringgrid3.ColCount-1 do
        stringgrid3.cells[0,i]:=IntToStr(i);
      for i:=0 to stringgrid3.RowCount-1 do
        stringgrid3.cells[i,0]:=IntToStr(i);
      stringgrid3.cells[0,0]:='';
     end
     else
       showmessage('数组下标越界,重新输入节点标号');

end;

{电压源中电流控制电流源}
procedure TForm1.N61Click(Sender: TObject);
var
   i,u,v:integer;

begin
     StringGrid2.Cells[6,row_select]:= N61.Caption;
     if TryStrToInt(trim(StringGrid2.Cells[1,row_select]),u) then                                                     {取下标}
        j:=u
     else
        showmessage('节点J标号置入错误,重新输入节点J标号');
     if TryStrToInt(trim(StringGrid2.Cells[2,row_select]),v) then
        k:=v
     else
        showmessage('节点K标号置入错误,重新输入节点K标号');
     if (k < SpinEdit1.Value+5) and (j  < SpinEdit1.Value+5) then
     begin
       Y[j,SpinEdit1.Value+1]:=Y[j,SpinEdit1.Value+1]+D[row_select-1];
       Y[k,SpinEdit1.Value+1]:=Y[k,SpinEdit1.Value+1]-D[row_select-1];

       StringGrid3.Cells[j,SpinEdit1.Value+1]:=floattostr(Y[j,SpinEdit1.Value+1]);
       StringGrid3.Cells[k,SpinEdit1.Value+1]:=floattostr(Y[k,SpinEdit1.Value+1]);

       for i:=0 to stringgrid3.ColCount-1 do
        stringgrid3.cells[0,i]:=IntToStr(i);
       for i:=0 to stringgrid3.RowCount-1 do
        stringgrid3.cells[i,0]:=IntToStr(i);
       stringgrid3.cells[0,0]:='';
     end
     else
       showmessage('数组下标越界,重新输入节点标号');

end;

{电压源控制电压源}
procedure TForm1.N71Click(Sender: TObject);

var
   i,u,v,w,z:integer;
begin
      StringGrid2.Cells[6,row_select]:= N71.Caption;
      if TryStrToInt(trim(StringGrid2.Cells[1,row_select]),u) then                                                     {取下标}
        j:=u
     else
        showmessage('节点J标号置入错误,重新输入节点J标号');
     if TryStrToInt(trim(StringGrid2.Cells[2,row_select]),v) then
        k:=v
     else
        showmessage('节点K标号置入错误,重新输入节点K标号');
     if TryStrToInt(trim(StringGrid2.Cells[3,row_select]),w) then                                                     {取下标}
        f:=w
     else
        showmessage('节点F标号置入错误,重新输入节点F标号');
     if TryStrToInt(trim(StringGrid2.Cells[4,row_select]),z) then
        t:=z
     else
        showmessage('节点T标号置入错误,重新输入节点T标号');

     if (k < SpinEdit1.Value+5) and (j  < SpinEdit1.Value+5) and (f  < SpinEdit1.Value+5) and (t  < SpinEdit1.Value+5)then
      begin                                             {对系数矩阵赋值}
        Y[j,SpinEdit1.Value+2]:=Y[j,SpinEdit1.Value+2]+1;
        Y[k,SpinEdit1.Value+2]:=Y[k,SpinEdit1.Value+2]-1;
        Y[SpinEdit1.Value+2,j]:=Y[SpinEdit1.Value+2,j]+1;
        Y[SpinEdit1.Value+2,k]:=Y[SpinEdit1.Value+2,k]-1;
        Y[SpinEdit1.Value+2,f]:=Y[SpinEdit1.Value+2,f]-D[row_select-1];
        Y[SpinEdit1.Value+2,t]:=Y[SpinEdit1.Value+2,t]+D[row_select-1];


        StringGrid3.Cells[j,SpinEdit1.Value+2]:=floattostr(Y[j,SpinEdit1.Value+2]);
        StringGrid3.Cells[k,SpinEdit1.Value+2]:=floattostr(Y[k,SpinEdit1.Value+2]);
        StringGrid3.Cells[SpinEdit1.Value+2,j]:=floattostr(Y[SpinEdit1.Value+2,j]);
        StringGrid3.Cells[SpinEdit1.Value+2,k]:=floattostr(Y[SpinEdit1.Value+2,k]);
        StringGrid3.Cells[SpinEdit1.Value+2,f]:=floattostr(Y[SpinEdit1.Value+2,f]);
        StringGrid3.Cells[SpinEdit1.Value+2,t]:=floattostr(Y[SpinEdit1.Value+2,t]);

        for i:=0 to stringgrid3.ColCount-1 do
        stringgrid3.cells[0,i]:=IntToStr(i);
        for i:=0 to stringgrid3.RowCount-1 do
        stringgrid3.cells[i,0]:=IntToStr(i);
        stringgrid3.cells[0,0]:='';
      end
      else
       showmessage('数组下标越界,重新输入节点标号');

end;

{电流源控制电压源}
procedure TForm1.N81Click(Sender: TObject);
var
   i,u,v,w,z,h:integer;

begin
     StringGrid2.Cells[6,row_select]:= N81.Caption ;
     if TryStrToInt(trim(StringGrid2.Cells[1,row_select]),u) then                                                     {取下标}
        j:=u
     else
        showmessage('节点J标号置入错误,重新输入节点J标号');
     if TryStrToInt(trim(StringGrid2.Cells[2,row_select]),v) then
        k:=v
     else
        showmessage('节点K标号置入错误,重新输入节点K标号');
     if TryStrToInt(trim(StringGrid2.Cells[3,row_select]),w) then                                                     {取下标}
        f:=w
     else
        showmessage('节点F标号置入错误,重新输入节点F标号');
     if TryStrToInt(trim(StringGrid2.Cells[4,row_select]),z) then
        t:=z
     else
        showmessage('节点T标号置入错误,重新输入节点T标号');
     if TryStrToInt(trim(StringGrid2.Cells[5,row_select]),z) then
        m:=h
     else
        showmessage('数据M置入错误,重新输入数据M');
      if (k < SpinEdit1.Value+5) and (j  < SpinEdit1.Value+5) and (f  < SpinEdit1.Value+5) and (t  < SpinEdit1.Value+5)then
       begin
        Y[j,SpinEdit1.Value+3]:=Y[j,SpinEdit1.Value+3]+1;
        Y[k,SpinEdit1.Value+3]:=Y[k,SpinEdit1.Value+3]-1;
        Y[SpinEdit1.Value+3,j]:=Y[SpinEdit1.Value+3,j]+1;
        Y[SpinEdit1.Value+3,k]:=Y[SpinEdit1.Value+3,k]-1;
        Y[SpinEdit1.Value+3,f]:=Y[SpinEdit1.Value+3,f]-(D[row_select-1]*D[m-1]);
        Y[SpinEdit1.Value+3,t]:=Y[SpinEdit1.Value+3,t]+(D[row_select-1]*D[m-1]);


        StringGrid3.Cells[j,SpinEdit1.Value+3]:=floattostr(Y[j,SpinEdit1.Value+3]);
        StringGrid3.Cells[k,SpinEdit1.Value+3]:=floattostr(Y[k,SpinEdit1.Value+3]);
        StringGrid3.Cells[SpinEdit1.Value+3,j]:=floattostr(Y[SpinEdit1.Value+3,j]);
        StringGrid3.Cells[SpinEdit1.Value+3,k]:=floattostr(Y[SpinEdit1.Value+3,k]);
        StringGrid3.Cells[SpinEdit1.Value+3,f]:=floattostr(Y[SpinEdit1.Value+3,f]);
        StringGrid3.Cells[SpinEdit1.Value+3,t]:=floattostr(Y[SpinEdit1.Value+3,t]);

        for i:=0 to stringgrid3.ColCount-1 do
        stringgrid3.cells[0,i]:=IntToStr(i);
        for i:=0 to stringgrid3.RowCount-1 do
        stringgrid3.cells[i,0]:=IntToStr(i);
        stringgrid3.cells[0,0]:='';
      end
      else
       showmessage('数组下标越界,重新输入节点标号');

end;

{电压源中电流源控制电压源}
procedure TForm1.N91Click(Sender: TObject);
var
   i,u,v:integer;

begin
      StringGrid2.Cells[6,row_select]:= N91.Caption ;
      if TryStrToInt(trim(StringGrid2.Cells[1,row_select]),u) then                                                     {取下标}
        j:=u
     else
        showmessage('节点J标号置入错误,重新输入节点J标号');
     if TryStrToInt(trim(StringGrid2.Cells[2,row_select]),v) then
        k:=v
     else
        showmessage('节点K标号置入错误,重新输入节点K标号');
     if (k < SpinEdit1.Value+5) and (j  < SpinEdit1.Value+5) then
     begin
        Y[j,SpinEdit1.Value+4]:=Y[j,SpinEdit1.Value+4]+1;
        Y[k,SpinEdit1.Value+4]:=Y[k,SpinEdit1.Value+4]-1;
        Y[SpinEdit1.Value+4,j]:=Y[SpinEdit1.Value+4,j]+1;
        Y[SpinEdit1.Value+4,k]:=Y[SpinEdit1.Value+4,k]-1;
        Y[SpinEdit1.Value+4,SpinEdit1.Value+1]:=Y[SpinEdit1.Value+4,SpinEdit1.Value+1]-D[row_select-1];

        StringGrid3.Cells[j,SpinEdit1.Value+4]:=floattostr(Y[j,SpinEdit1.Value+4]);
        StringGrid3.Cells[k,SpinEdit1.Value+4]:=floattostr(Y[k,SpinEdit1.Value+4]);
        StringGrid3.Cells[SpinEdit1.Value+4,j]:=floattostr(Y[SpinEdit1.Value+4,j]);
        StringGrid3.Cells[SpinEdit1.Value+4,k]:=floattostr(Y[SpinEdit1.Value+4,k]);
        StringGrid3.Cells[SpinEdit1.Value+4,SpinEdit1.Value+1]:=floattostr(Y[SpinEdit1.Value+4,SpinEdit1.Value+1]);

        for i:=0 to stringgrid3.ColCount-1 do
        stringgrid3.cells[0,i]:=IntToStr(i);
        for i:=0 to stringgrid3.RowCount-1 do
        stringgrid3.cells[i,0]:=IntToStr(i);
        stringgrid3.cells[0,0]:='';
     end
     else
       showmessage('数组下标越界,重新输入节点标号');
end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
var
  v:double;
begin
      if  tryStrToFloat(value,v) then
         D[ACol]:= v
      else
        begin
           StringGrid1.Cells[ACol,ARow]:=value;
           if  StringGrid1.Cells[ACol,ARow]<>'' then
              showmessage('录入数据非法');
           D[ACol]:= 0;
        end;

end;

procedure TForm1.StringGrid2SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
VAR
  V:integer;
begin
      if  not TryStrToInt(value,v) then
      begin
      StringGrid2.Cells[ACol,ARow]:=value;
      if  StringGrid2.Cells[ACol,ARow]<>'' then
      showmessage('录入数据非法');

      end;
end;

procedure TForm1.StringGrid5SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
var
 v:double;
begin
      if  not tryStrToFloat(value,v) then
      begin
      StringGrid5.Cells[ACol,ARow]:=value;
      if  StringGrid5.Cells[ACol,ARow]<>'' then
      showmessage('录入数据非法');
      
      end;

end;


{解线性方程组}
procedure TForm1.Button2Click(Sender: TObject);
VAR
n,M:INTEGER;
begin
       
    {  Y[1,1]:=1;
      Y[1,2]:=2;
      Y[1,3]:=1;
    //  Y[1,4]:=0;
      Y[2,1]:=3;
      Y[2,2]:=2;
      Y[2,3]:=1;
     // Y[2,4]:=0;
      Y[3,1]:=1;
      Y[3,2]:=3;
      Y[3,3]:=2;
     // Y[3,4]:=0;
     // Y[4,1]:=1;
      //Y[4,2]:=1;
      //Y[4,3]:=1;
      //Y[4,4]:=0;
      B[1]:=3;
      B[2]:=6;
      B[3]:=9;
    //  B[4]:=0;
     // n:=3;
      n:=SpinEdit1.Value+4;
      {Y1:=copy(Y);
      B1:=copy(B);  }
      n:=SpinEdit1.Value+4;
      GAUSSJ(Y,n,B);
      FOR M:=1 TO SpinEdit1.Value+4 DO
      StringGrid4.Cells[m-1,1]:=floattostr(B[m]);





end;



procedure TForm1.Button4Click(Sender: TObject);
var
  aa:integer;
begin

    SpinEdit1.Value:=0;
    SpinEdit2.Value:=0;
      {清空赋值表格}
   with StringGrid1 do
       for aa := 0 to ColCount - 1 do
           Cols[aa].Clear;
   stringgrid1.ColCount:= 1;
   stringgrid1.RowCount:= 1;



   {清空数据置入表格}
   with StringGrid2 do
       for aa := 0 to ColCount - 1 do
           Cols[aa].Clear;
   stringgrid2.RowCount:= 1;
   stringgrid2.ColCount:= 1;



   {清空矩阵表格}
   with StringGrid3 do
       for aa := 0 to ColCount - 1 do
           Cols[aa].Clear;
   stringgrid3.ColCount:= 1;
   stringgrid3.RowCount:= 1;


   {清空结果数据表格}
   with StringGrid4 do
       for aa := 0 to ColCount - 1 do
           Cols[aa].Clear;
   stringgrid4.ColCount:= 1;
   stringgrid4.RowCount:= 1;



   {清空数据置入表格}
   with StringGrid5 do
       for aa := 0 to ColCount - 1 do
           Cols[aa].Clear;
   stringgrid5.ColCount:= 1;
   stringgrid5.RowCount:= 1;

    {清空各数组}
     Y:=nil;
     B:=nil;
     X:=nil;
     D:=nil;


end;



end.

⌨️ 快捷键说明

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