📄 unitls.pas
字号:
unit Unitls;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, StdCtrls, ExtCtrls, DB, ADODB, FileCtrl;
type
TFormls = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
edit1: TEdit;
Edit3: TEdit;
FileListBox1: TFileListBox;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
//procedure Button5Click(Sender: TObject);
//procedure formcreate(Sender:TObject);
private
{ Private declarations }
public
{ Public declarations }
// class function GetRAM:char;
end;
var
Formls: TFormls;
Type
TFileHead = Record
code : string[30];
end;
type
TFileData = record
name:array [0..999] of char;
end;
var
filename,usercode:string;
userdetailinRAM:string;
var
FileStream: TFileStream;
FileHead: TFileHead;
filedata:Tfiledata;
procedure CreateFile(TFileName: string);
implementation
uses unitmodule,unitmainfr;
{$R *.dfm}
Function GetRAM:Char;
var
Ch : Char;
S : string;
begin
for Ch := 'D' to 'Z' do
begin
s := Ch + ':\';
if GetDriveType(PChar(s)) = DRIVE_REMOVABLE then
Begin
Result:=Ch;
Break;
End;
end;
End;
procedure CreateFile(TFileName: string);
Begin
If Not FileExists(TFileName) Then
Begin
FileStream := TFileStream.Create(TFileName, fmCreate);
FileStream.Seek(0, soFrombeginning);
Filestream.Write(filehead, sizeof(filehead));
FileStream.Write(FileData, SizeOf(FileData));
FileStream.Free;
End
Else
Begin
FileStream := TFileStream.Create(TFileName, fmOpenRead);
End;
End;
{procedure TFormls.formcreate(Sender:TObject);
var s:string;
VolumeSerialNumber,MaximumComponentLength,SystemFlags:DWORD;
begin
s:=GetRAM+':\';
if s='' then showmessage('请插入优盘')
else begin
OpenDialog1.defaultext:=GetRAM;
combobox1.Text:=s;
if GetVolumeInformation(pchar(s),nil,0,@VolumeSerialNumber,nil,MaximumComponentLength,@SystemFlags,0)
then edit3.Text:=IntToStr(VolumeSerialNumber);
end;
end; }
procedure TFormls.FormCreate(Sender: TObject);
var
s,lsfilename:string;
begin
s:=GetRAM+':\';
lsfilename:=s+'xazx.txt';
if FileExists(lsfilename) then
begin //读文件,得到优盘编号
CreateFile(lsfilename);
FileStream.Read(Filehead, SizeOf(Filehead));
usercode:=filehead.code;
filestream.free; //记住文件流释放,否则连续打开会引起错误
end
else begin
lsfilename:='xazx.txt';
showmessage('不存在用户信息文件'+lsfilename+',请创建');
//showmessage(filename);
end;
end;
procedure TFormls.Button1Click(Sender: TObject);
begin
inherited;
if opendialog1.Execute then
begin
edit1.text:=opendialog1.FileName;
end;
end;
procedure TFormls.Button3Click(Sender: TObject);
begin
inherited;
close();
end;
procedure TFormls.Button2Click(Sender: TObject);
var i,k,a,b,c,num,waittime:integer;
m,j,n,d,e,hh,hhh,fm,sj,dy,dyy,l,ll,lll,llll,hege,bianhao,hegebiaozhi,username,jright,jleft,betweentime,strtime:string;
z,zz,zzz,zzzz,time,train:string;
s:array [0..999] of char;
f:pchar;
sjj:double;
str,filepath:string;
ifbeifen:boolean;
searchrec:tsearchrec;
begin
if edit1.Text='' then
showmessage('请输入打开路径')
else
begin
filename:=edit1.Text;
//FileStream := TFileStream.Create(TFileName, fmOpenReadWrite);
createfile(filename);
// FileStream.Seek(1, soFromBeginning);
// FileStream.Read(FileData, SizeOf(FileData));
FileStream.Read(filedata, SizeOf(filedata));
m:=filedata.name;
// edit2.Text:=inttostr(length(m));
strpcopy(s,m);
with DataModule2.ADOQuery3 do
begin
close;
SQL.Clear;
SQL.Add('delete * from temp ');
execsql;
end;
if inttohex(ord(s[0]),2)+inttohex(ord(s[1]),2)<>'AA55'
then showmessage('输入格式有误')
else
begin
with DataModule2.ADOQuery9 do
begin
num:=length(m);
bianhao:=inttohex(ord(s[num-3]),2)+inttohex(ord(s[num-2]),2);
hege:=inttohex(ord(s[num-1]),2);
if hege='FF' then
hegebiaozhi:='否'
else hegebiaozhi:='是';
end;
for i:=0 to ((length(m)-3) div 18)-1 do
begin
c:=i;
if inttohex(ord(s[5+c*18]),2)='60' then l:='00'
else l:=inttohex(ord(s[5+c*18]),2);
if inttohex(ord(s[6+c*18]),2)='60' then ll:='00'
else ll:=inttohex(ord(s[6+c*18]),2);
if inttohex(ord(s[7+c*18]),2)='60' then lll:='00'
else lll:=inttohex(ord(s[7+c*18]),2);
if inttohex(ord(s[9+c*18]),2)='FF' then llll:='00'
else llll:=inttohex(ord(s[9+c*18]),2);
if inttohex(ord(s[14+c*18]),2)='FF' then dy:='00'
else dy:=inttohex(ord(s[14+c*18]),2);
if inttohex(ord(s[15+c*18]),2)='FF' then dyy:='00'
else dyy:=inttohex(ord(s[15+c*18]),2);
j:=inttohex(ord(s[2+c*18]),2)+inttohex(ord(s[3+c*18]),2)+inttohex(ord(s[4+c*18]),2)+l+ll+lll;
n:=inttohex(ord(s[8+c*18]),2);
d:=llll;
e:=inttohex(ord(s[10+c*18]),2);
hh:=inttohex(ord(s[11+c*18]),2);
hhh:=inttohex(ord(s[12+c*18]),2);
fm:=inttohex(ord(s[13+c*18]),2);
// sj:=dy+inttostr(strtoint('$'+dyy)); // strtoint('$'+dyy)可以直接将16进制数转化为10进制
sj:=dy+dyy; //如果后面那个字节dyy是16进制 可以考虑sj:=inttostr(strtoint(dy)*100+strtoint('$'+dyy))
betweentime:=inttostr(strtoint('$'+sj));
if length(betweentime)<=3 then waittime:=0
else
waittime:=strtoint(copy(betweentime,1,length(betweentime)-3));//sj是应变时间,按ms计算,只需要截取它的整数时间(按秒计算)
jleft:=copy(j,1,10);
jright:=lll;
{with DADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select 道岔名 from 道岔管理表 where 道岔号=:a');
Parameters.ParamByName('a').Value := Trim(n);
open;
end;
if ADOQuery1.FieldByName('道岔名').Value <> null then
hh := DataModule1.ADOQuery3.FieldByName('道岔名').Value
else hh:='0';//
{with Datamodule1.ADOQuery2 do
begin
close;
SQL.Clear;
SQL.Add('select ') }
with DataModule2.ADOQuery2 do
begin
close;
SQL.Clear;
SQL.Add('select 灯位情况 from signal where 灯位=:a and 闪灯=:b');
Parameters.ParamByName('a').Value:=Trim(n);
Parameters.ParamByName('b').Value:=Trim(d);
Open;
end;
if DataModule2.ADOQuery2.FieldByName('灯位情况').Value<>null then
z:=DataModule2.ADOQuery2.FieldByName('灯位情况').Value
else z:='有错误';
with DataModule2.ADOQuery3 do
begin
close;
SQL.Clear;
SQL.Add('select signaltype from signaltype where code=:a');
Parameters.ParamByName('a').Value:=Trim(e);
open;
end;
if DataModule2.ADOQuery3.FieldByName('signaltype').Value<>null then
zz:=DataModule2.ADOQuery3.FieldByName('signaltype').Value
else zz:='有错误';
with DataModule2.ADOQuery4 do
begin
close;
SQL.Clear;
SQL.Add('select signaldetail from signalfreq where signalcode=:a and signaltype=:b');
Parameters.ParamByName('a').Value:=Trim(hh);
Parameters.paramByName('b').Value:=Trim(zz);
open;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -