📄 unit2.pas
字号:
unit Unit2;
interface
uses
Windows, ActiveX, ComObj, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry, IniFiles, StrUtils, Buttons, ShlObj, FileCtrl;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
txtschoolno: TEdit;
txtcf: TEdit;
txtwcf: TEdit;
txtport: TEdit;
ComboBox1: TComboBox;
cmdtimeset: TButton;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
schoolin1: TEdit;
txtshin: TEdit;
ComboBox2: TComboBox;
schoolout1: TEdit;
txtshout: TEdit;
schoolty1: TEdit;
schoolin2: TEdit;
schoolout2: TEdit;
schoolty2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
CheckBox1: TCheckBox;
procedure cmdtimesetClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
function check(devidstr: string): boolean;
function removedo(str: string; dostr: string): string;
procedure setdevid(tmpstr: string; schoolno: string; front: string; dostr: string);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
devidarr: TStrings;
clickbool: boolean;
implementation
uses Unit1, Unit4;
{$R *.dfm}
procedure TForm2.cmdtimesetClick(Sender: TObject);
begin
clickbool := true;
// self.Hide;
Form1.Show;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
var
i,j,count: integer;
devidstr: string;
checkdevidarr: TStrings;
Bool: boolean;
// Reg: TRegistry;
begin
if TryStrToInt(txtschoolno.text, i) then
begin
if length(txtschoolno.text) <> 4 then
begin
Showmessage('学校编码只能设置为4位的数字!');
txtschoolno.Text := '';
txtschoolno.SetFocus;
exit;
end;
end else
begin
Showmessage('学校编码必须设置为4位的整数!');
txtschoolno.Text := '';
txtschoolno.SetFocus;
exit;
end;
if ComboBox2.Text = '' then
begin
Showmessage('默认串口设置不能为空');
ComboBox2.ItemIndex := 0;
exit;
end;
if TryStrToInt(txtcf.text, i) then
begin
if strtoint(txtcf.Text) < 5 then
begin
Showmessage('重复刷卡时间间隔不能小于5分钟');
txtcf.Text := inttostr(5);
txtcf.SetFocus;
exit;
end;
end else
begin
Showmessage('重复刷卡时间间隔必须设置为可识别的数字');
txtcf.Text := inttostr(5);
txtcf.SetFocus;
exit;
end;
if TryStrToInt(txtwcf.Text, i) then
begin
if (strtoint(txtwcf.Text) < 10) then
begin
Showmessage('无回执重复上传时间间隔设置不能小于10分钟');
txtwcf.Text := inttostr(10);
txtwcf.SetFocus;
exit;
end;
end else
begin
Showmessage('无回执重复上传时间间隔设置必须为整数');
txtwcf.Text := inttostr(10);
txtwcf.SetFocus;
exit;
end;
if TryStrToInt(txtport.Text, i) then
begin
if (ComboBox1.Text = '') or (txtport.Text = '') then
begin
Showmessage('请选择正确的IP和端口!');
ComboBox1.ItemIndex := 0;
txtport.Text := inttostr(10000);
exit;
end;
end else
begin
Showmessage('请选择正确的IP和端口!');
ComboBox1.ItemIndex := 0;
txtport.Text := inttostr(10000);
exit;
end;
Bool := false;
count := 0;
if (schoolin1.text = '') and (schoolout1.text = '') and (schoolty1.text = '') and (schoolin2.text = '') and (schoolout2.text = '') and (schoolty2.text = '') and (txtshin.text = '') and (txtshout.text = '') then
Bool := true; //机号所填全为空,则不进行下面的机号重复校验
if not Bool then //判断机号是否重复
begin
if RightStr(schoolin1.text, 1) <> '' then devidstr := devidstr + removedo(schoolin1.text, ',');
if RightStr(schoolout1.text, 1) <> '' then devidstr := devidstr + removedo(schoolout1.text, ',') + ',';
if RightStr(schoolty1.text, 1) <> '' then devidstr := devidstr + removedo(schoolty1.text, ',') + ',';
if RightStr(schoolin2.text, 1) <> '' then devidstr := devidstr + removedo(schoolin2.text, ',') + ',';
if RightStr(schoolout2.text, 1) <> '' then devidstr := devidstr + removedo(schoolout2.text, ',') + ',';
if RightStr(schoolty2.text, 1) <> '' then devidstr := devidstr + removedo(schoolty2.text, ',') + ',';
if RightStr(txtshin.text, 1) <> '' then devidstr := devidstr + removedo(txtshin.text, ',') + ',';
if RightStr(txtshout.text, 1) <> '' then devidstr := devidstr + removedo(txtshout.text, ',') + ',';
if check(devidstr) then
begin
devidstr := removedo(devidstr, ',');
try
begin
checkdevidarr := TStringList.Create;
checkdevidarr.CommaText := devidstr;
for i := 0 to checkdevidarr.Count - 1 do
begin
for j := 0 to checkdevidarr.Count - 1 do
begin
if checkdevidarr[i] = checkdevidarr[j] then
Inc(count);
end;
if count >=2 then
begin
showmessage('设备号为: ' + checkdevidarr[i] + ' 的机号重复');
exit;
end;
count := 0;
end;
end;
finally
freeandnil(checkdevidarr);
devidstr := '';
end;
end else
begin
showmessage('对不起,在您所设置的机号中含有非法字符!');
exit;
end;
end;
devidArr := Tstringlist.Create;
if schoolin1.Text <> '' then setdevid(schoolin1.Text, txtschoolno.text, '11', ',');
if schoolout1.Text <> '' then setdevid(schoolout1.Text, txtschoolno.text, '21', ',');
if schoolty1.Text <> '' then setdevid(schoolty1.Text, txtschoolno.text, '31', ',');
if txtshin.Text <> '' then setdevid(txtshin.Text, txtschoolno.text, '13', ',');
if txtshout.Text <> '' then setdevid(txtshout.Text, txtschoolno.text, '23', ',');
if schoolin2.Text <> '' then setdevid(schoolin2.Text, txtschoolno.text, '12', ',');
if schoolout2.Text <> '' then setdevid(schoolout2.Text, txtschoolno.text, '22', ',');
if schoolty2.Text <> '' then setdevid(schoolty2.Text, txtschoolno.text, '32', ',');
inifile.WriteString('schoolno', 'value', txtschoolno.Text);
inifile.WriteString('COM', 'value', RightStr(ComboBox2.Text, 1));
inifile.WriteString('Card.Interval','value',txtcf.Text);
inifile.WriteString('Upload.Interval','value',txtwcf.Text);
inifile.WriteString('IP','value',ComboBox1.Text);
inifile.WriteString('PORT','value',txtport.Text);
inifile.WriteString('schoolin1','value',removedo(schoolin1.Text,','));
inifile.WriteString('schoolout1','value',removedo(schoolout1.Text,','));
inifile.WriteString('schoolty1','value',removedo(schoolty1.Text,','));
inifile.WriteString('txtshin','value',removedo(txtshin.Text,','));
inifile.WriteString('txtshout','value',removedo(txtshout.Text,','));
inifile.WriteString('schoolin2','value',removedo(schoolin2.Text,','));
inifile.WriteString('schoolout2','value',removedo(schoolout2.Text,','));
inifile.WriteString('schoolty2','value',removedo(schoolty2.Text,','));
inifile.WriteString('SendCount','value', '20'); //上发数据量
inifile.WriteString('Send.Interval', 'value', '10000'); //上发时间间隔
inifile.WriteString('Road.Interval','value', '10000'); //自动采集数据时间间隔(毫秒)
inifile.WriteString('Count','value','20'); //每多少条保存进数据库
inifile.WriteString('Sleep','value', '0'); //读数据休息时间
inifile.WriteString('CheckState','value','2000'); //检测ISWORK的状态
inifile.WriteString('conn.interval','value','60'); //十分钟连接一次远程
inifile.WriteString('Style','value','T'); //存数据模式,默认为 单条
// Reg := TRegistry.Create;
// try
// begin
// Reg.RootKey := HKEY_LOCAL_MACHINE;
// Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', False);
if CheckBox1.Checked then
begin
// Reg.WriteString('Catcher', Paramstr(0));
inifile.WriteString('autostart','value','T');
end else
// Reg.DeleteValue('Catcher');
inifile.WriteString('autostart','value','F');
// end;
// finally
// Reg.CloseKey;
// Reg.Free;
// end;
if inifile.ReadString('check1', 'value', '') = '' then
begin
showmessage('为保证程序正常运行,请在下面弹出的出入校对话框中,对出入校时间段进行设置!');
self.Hide;
Form1.Show;
exit;
end;
for i := 0 to devidArr.Count - 1 do
begin
devidstr := devidstr + devidArr[i] + ',';
end;
devidstr := removedo(devidstr, ',');
inifile.WriteString('devids','value',devidstr);
showmessage('在您下次启动程序的时候设置生效!!!');
Close;
Form4.Show;
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
var
fn: string;
begin
fn := ExtractFilePath(Paramstr(0));
fn := fn + 'values.ini';
if not FileExists(fn) then
begin
showmessage('配置文件尚未生成,请您认真设置!');
exit;
end else begin
Close;
Form4.Show;
end;
end;
function TForm2.check(devidstr: string): boolean;
var
i: integer;
begin
result :=False;
for i:=1 to length(devidstr) do
begin
if devidstr[i] in ['0'..'9',','] then
result :=True
else
begin
result :=False;
exit;
end;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
//var
// Reg: TRegistry;
begin
// Reg := TRegistry.Create;
// try
// begin
// Reg.RootKey := HKEY_LOCAL_MACHINE;
// Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', False);
// if Reg.ValueExists('Catcher') then
// begin
// if Reg.ReadString('Catcher') = Paramstr(0) then
if inifile.ReadString('autostart','value', '') <> '' then
begin
if inifile.ReadString('autostart','value', '') = 'T' then
self.CheckBox1.Checked := True
else
self.CheckBox1.Checked := False;
end;
// end;
// end;
// finally
// Reg.CloseKey;
// Reg.Free;
// end;
ComboBox2.Text := inifile.ReadString('COM', 'value', '');
if inifile.ReadString('IP','value', '') <> '' then ComboBox1.Text := inifile.ReadString('IP','value', '');
if inifile.ReadString('schoolno', 'value', '') <> '' then txtschoolno.Text := inifile.ReadString('schoolno', 'value', '');
if inifile.ReadString('Card.Interval', 'value', '') <> '' then txtcf.Text := inifile.ReadString('Card.Interval','value', '');
if inifile.ReadString('Upload.Interval', 'value', '') <> '' then txtwcf.Text := inifile.ReadString('Upload.Interval','value', '');
if inifile.ReadString('PORT', 'value', '') <> '' then txtport.Text := inifile.ReadString('PORT','value', '');
schoolin1.Text := inifile.ReadString('schoolin1','value', '');
schoolout1.Text := inifile.ReadString('schoolout1','value', '');
schoolty1.Text := inifile.ReadString('schoolty1','value', '');
txtshin.Text := inifile.ReadString('txtshin','value', '');
txtshout.Text := inifile.ReadString('txtshout','value', '');
schoolin2.Text := inifile.ReadString('schoolin2','value', '');
schoolout2.Text := inifile.ReadString('schoolout2','value', '');
schoolty2.Text := inifile.ReadString('schoolty2','value', '');
SetWindowLong(self.Handle, GWL_STYLE, WS_CAPTION);
end;
function TForm2.removedo(str: string; dostr: string): string;
begin
if RightStr(str,1) = dostr then
result := copy(str, 1, length(str)-1)
else
result := str;
end;
procedure TForm2.setdevid(tmpstr: string; schoolno:string; front: string; dostr: string);
var
tempstring: TStringlist;
tempdevid, NumStr, devid: string;
i: integer;
begin
NumStr := '00000';
tempdevid := removedo(tmpstr, ',');
tempstring := TStringlist.Create;
try
begin
tempstring.Delimiter := ',';
tempstring.CommaText := tempdevid;
for i := 0 to tempstring.Count - 1 do
begin
devid := Copy(NumStr,1,5 - Length(tempstring[i])) + tempstring[i];
devidArr.Add(front + schoolno + devid);
end;
end;
finally
freeandnil(tempstring);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -