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

📄 unitls.pas

📁 信号机测试信号管理软件 其中含有文件上传及修改数据库数据的功能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -