📄 unitmain.pas
字号:
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, StdCtrls, Spin, ComCtrls;
type
TFormMain = class(TForm)
PanelMng: TPanel;
Button1: TButton;
StringGridMatrix: TStringGrid;
SpinEdit1: TSpinEdit;
Label1: TLabel;
StatusBar1: TStatusBar;
Splitter1: TSplitter;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ResetGrid;
end;
var
FormMain: TFormMain;
function precisesec( dt : TDateTime ) : string;
implementation
uses Sparxcpt, SparSolv;
{$R *.dfm}
procedure LoadLHS( const eq, vr : integer; const value : string );
// eq方程数相当于行, vr相当于列,value 值
var
r : double;
begin
if trim( value ) = '' then exit;
try
r := StrToFloat( value )//从表中传来的值
except
exit;
end;
AddLHS_A( eq, vr, r ); //
end;
procedure LoadRHS( const eq: integer; const value : string ); //
var
r : double;
begin
if trim( value ) = '' then exit;
try
r := StrToFloat( value )
except
exit;
end;
AddRHS_A( eq, r ); //eq是行或者列,r是数值保存到矩阵中
end;
procedure TFormMain.Button1Click(Sender: TObject);
var
i, j : integer;
t1 : TDateTime; //时间类
originT,finishT:Dword; //delphi 的字符类
function GetTime:Dword;
begin
result:=GettickCount;//是取系统加载以来的经历的时间(毫秒)
end;
begin
ResetGrid;
InitStrucA( StringGridMatrix.RowCount-1 );
with StringGridMatrix do
try
// load data to SparSolv
for j := 1 to RowCount-1 do begin
LoadRHS( j, Cells[0,j] );//右边向量
for i := 1 to ColCount-2 do
LoadLHS( j, i, Cells[i, j] );//左边的矩阵
end;
t1 := Now;
OriginT:=Gettime;
Solve1A;
FinishT:=Gettime;
StatusBar1.Panels[1].Text := inttostr( FinishT - OriginT ) + ' ms'; //FinishT=OriginT?
// StatusBar1.Panels[1].Text := precisesec( Now - t1 ) + ' s';
for j := 1 to RowCount-1 do //把结果装在结果栏里
Cells[ ColCount-1, j ] := FloatToStr( GetAnswerF(j) ); //CELLS先列后行?
finally
ReleaseStruc;
end;
end;
function precisesec( dt : TDateTime ) : string; //及时间的函数
var
Hour, Minute, Sec, MilSec : word;
ss : double;
begin
ss := trunc( dt ) * 24 * 60 * 60;
DecodeTime( Dt, Hour, Minute, Sec, MilSec );
ss := ss + Hour*3600 + Minute*60 + Sec + MilSec/1000;
result := FloatToStr(ss);
end;
resourcestring
rsRHS = 'RHS';
rsResult = 'Result';
procedure TFormMain.ResetGrid;//窗体对象的函数
var
i : integer;
begin
with StringGridMatrix do begin
RowCount := SpinEdit1.Value + 1;
FixedRows := 1;
FixedCols := 0;
ColCount := RowCount + 1;
Cells[ 0,0 ] := rsRHS;
Cells[ ColCount-1,0 ] := rsResult;
for i := 1 to ColCount-2 do
Cells[ i, 0 ] := IntToStr(i);
end;
end;
procedure TFormMain.FormShow(Sender: TObject);
begin
ResetGrid;
end;
procedure TFormMain.SpinEdit1Change(Sender: TObject);
begin
ResetGrid;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -