📄 unttest1.pas
字号:
unit Unttest1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, TeEngine, Series, ExtCtrls,
TeeProcs, Chart, DB, ADODB;
type xypoint=record
Xpoint:double;
Ypoint:double;
end;
type
TFrmtest1 = class(TForm)
GroupBox3: TGroupBox;
GroupBox2: TGroupBox;
Label7: TLabel;
Edit4: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DT1: TDateTimePicker;
Label4: TLabel;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
Edit5: TEdit;
BitBtn2: TBitBtn;
GroupBox4: TGroupBox;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
sampling: TChart;
Series1: TLineSeries;
OD2: TOpenDialog;
Label6: TLabel;
Label8: TLabel;
Edit6: TEdit;
ADOQuery1: TADOQuery;
Label9: TLabel;
Edit7: TEdit;
Label10: TLabel;
procedure FormShow(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
function Shiyutu(ssa1:string):string;
procedure BitBtn2Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frmtest1: TFrmtest1;
sk,sb:string;
fx0,fy0,fx1,fy1:double;
implementation
uses Untbd2, Unit7;
{$R *.dfm}
procedure TFrmtest1.FormShow(Sender: TObject); //参照的标定编号
var
s1:string;
begin
s1:= 'select * from bd1 where testno<>''''';
Frmbd2.ADOQuery3.Close;
Frmbd2.ADOQuery3.SQL.Clear;
Frmbd2.ADOQuery3.SQL.Add(s1);
Frmbd2.ADOQuery3.Open;
Frmbd2.ADOQuery3.First;
ComboBox1.Items.Clear;
while not Frmbd2.ADOQuery3.Eof do
begin
ComboBox1.Items.Add(Frmbd2.ADOQuery3.FieldByName('testno').AsString);
Frmbd2.ADOQuery3.Next;
end;
end;
procedure TFrmtest1.BitBtn1Click(Sender: TObject);
//请选择测量的FID文件
begin
Label10.Caption:='';
edit5.Text:='';
OD2.Execute;
edit5.Text:=od2.FileName;
if edit5.Text='' then
begin
showmessage('请选择FID文件!');
exit;
end;
end;
procedure TFrmtest1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
function TFrmtest1.Shiyutu(ssa1:string):string;
var
hWndClose: HWnd;
mypath:string;
i,j,i1:integer;
Tmp,ddd:real;
a:array[0..2048] of real;
b:array[0..2048] of real;
c:array[0..2048] of real;
d:array[0..2048] of real;
e:array[0..2048] of real; //实部和虚部的模
TPFile:file of TP;
x:TP;
begin
Series1.Clear;
PageControl1.TabIndex :=0;
PageControl1.ActivePage:=TabSheet1; //
assignfile(TPFile,ssa1); //ssa1--FID文件
reset(TPFile);
sampling.Series[0].Clear;
i:=0;
try
while (not eof(TPFile)) do
begin
if i>2047 then
begin
showmessage('TD参数设置不对,应该为1024或2048。'+#13+'请重新设置测量!');
break;
end;
read(TPFile,x);
a[i] :=x.re; //实部
b[i]:=x.im ; //虚部
e[i]:=sqrt(a[i]*a[i]+b[i]*b[i]); //实部和虚部的模
// memo1.Lines.Add(inttostr(i)+' '+floattostr(a[i])+', '+floattostr(b[i])+' '); //测试胡数据
sampling.Series[0].Add((e[i])); //划线
// Chart1.Series[0].Add((a[i]));
inc(i);
end;
finally
closefile(TPFile);
end;
///////////////////////////////////////
j:=Series1.YValues.Locate(Series1.MaxYValue); //最大值位置
ddd:=0.0;
for i1:=j-10 to j+10 do
begin
d[i1]:=sqrt(a[i1]*a[i1]+b[i1]*b[i1])+ddd; //实部和虚部的模
ddd:=d[i1];
end;
tmp:=ddd/21; // 最大值附近40个值的平均值
// Tmp:= Series1.MaxYValue; //最大值的模
// label4.Caption :='时域图的最大值在'+FloatTostr(j)+'处' ;
// showmessage('最大值位置在'+inttostr(j)+#13+'最大值='+floattostr(tmp));
result:=FormatFloat('0.000',Tmp); //最大值
end;
procedure TFrmtest1.BitBtn2Click(Sender: TObject);
var
maxwz,syr1:string;
yr1,kr1,br1,maxxr1,zhiliang:real;
begin
{ if edit1.Text='' then
begin
showmessage('请输入样品名称!');
exit;
end; }
{ if edit6.Text='' then
begin
showmessage('请输入测量人名称!');
exit;
end;
if edit2.Text='' then
begin
showmessage('请输入样品编号!');
exit;
end;
if edit3.Text='' then
begin
showmessage('请输入样品来源!');
exit;
end; }
if edit5.Text='' then
begin
showmessage('请选择测量的FID文件!');
exit;
end;
if edit7.Text='' then
begin
showmessage('请输入测量的样品质量!');
exit;
end;
if combobox1.Text='' then
begin
showmessage('请选择参照的标定编号!');
exit;
end;
maxwz:=Shiyutu(edit5.Text);
zhiliang:=strtofloat(edit7.Text);
maxxr1:=StrToFloat(maxwz)/zhiliang; //Y轴
kr1:=StrToFloat(sk);
br1:=StrToFloat(sb);
yr1:=kr1*maxxr1+br1;
yr1:=(maxxr1-br1)/kr1; //x=[(y-b)/k]
syr1:= FormatFloat('0.000',yr1);
edit4.Text:=syr1; //油含量
Label10.Caption:='油含量='+syr1+'%';
{ s1:='INSERT INTO CELIANG(tren,CLname,CLBH,CLWPLY,CLRIQI,CZHBDBH,FIDFILE,YHL) VALUES('
+QuotedStr(edit6.Text)
+','+QuotedStr(edit1.Text)
+','+QuotedStr(edit2.Text)
+','+QuotedStr(edit3.Text)
+','+QuotedStr(DATETOSTR(DT1.Date))
+','+QuotedStr(ComboBox1.Text)
+','+QuotedStr(edit5.Text)
+','+QuotedStr(edit4.Text)
+')';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s1);
ADOQuery1.ExecSQL;
ADOQuery1.Close; }
end;
procedure TFrmtest1.ComboBox1Click(Sender: TObject);
var
s1,sx0,sy0,sx1,sy1:string;
// fx0,fy0,fx1,fy1:real;
e1:array[0..2] of real;
begin
if ComboBox1.text<>'' then
begin
s1:='select * from bd1 where testno='+QuotedStr(ComboBox1.Text);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s1);
ADOQuery1.Open;
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
sx0:= ADOQuery1.FieldByName('dbx0').AsString;
sy0:= ADOQuery1.FieldByName('dby0').AsString;
sx1:= ADOQuery1.FieldByName('dbx1').AsString;
sy1:= ADOQuery1.FieldByName('dby1').AsString;
sk:= ADOQuery1.FieldByName('xielv').AsString;
sb:= ADOQuery1.FieldByName('jieju').AsString;
ADOQuery1.Next;
end;
end;
PageControl1.TabIndex:=0;
PageControl1.ActivePage:=TabSheet1;
end;
procedure TFrmtest1.FormCreate(Sender: TObject);
begin
Label10.Caption:='';
dt1.Date:=date;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -