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

📄 util.pas

📁 学生成绩管理系统。主要是管理学生的成绩。对成绩进行查询。
💻 PAS
字号:
unit UTIL;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Dialogs,INIFiles,DBTables;
// CPU ID 专用变量==================================
const
	ID_BIT	=	$200000;			// EFLAGS ID bit
type
	TCPUID	= array[1..4] of Longint;
	TVendor	= array [0..11] of char;
//===================================================
 var
  LogTime:String;
  UserID:string;
  UserName:String;
  userpass:string;
  tabstatus:integer;
  school:string;
function File_Create(FileName: String): Boolean;
function File_Rewrite(FileName: String): Boolean;
function  TEST_OpenFile(FileName: String): Boolean;
function INI_Save_Str(INIFileName, Object_Name,
  T_Str: String): Boolean;
function INI_Save_Str2(INIFileName, Object_Name: String;
Object_Kind:string; T_Str: String): Boolean;
//CPU ID 及信息
FUNCTION IsCPUID_Available : BOOLEAN; register;
FUNCTION GetCPUID : TCPUID; assembler; register;
FUNCTION GetCPUVendor : TVendor; assembler; register;

// 密码---------------------------------------------
FUNCTION Encrypt(const InSTRING:STRING;

StartKey,MultKey,AddKey:INTEGER): STRING;
FUNCTION Decrypt(const InSTRING:STRING;

StartKey,MultKey,AddKey:INTEGER): STRING;
//edit2.text := Encrypt(edit1.text,123456,13579,24680);
//edit3.text := Decrypt(edit2.text,123456,13579,24680);

  function INI_Load_Bool(INIFileName, Object_Name: String;
    T_Def: Boolean): Boolean;
  function INI_Load_Int(INIFileName, Object_Name: String;
    T_Def: integer): Integer;
  function INI_Load_Object(INIFileName, Object_Name, Obj_Kind,
    T_Def: String): String;
  function INI_Load_Str2(INIFileName, Object_Name, Obj_Kind,
    T_Def: String): String;
  function INI_Load_Str(INIFileName, Object_Name,
    T_Def: String): String;
  function TimeGetStamp(T2:String):String;
implementation

//取回对象 储存相关信息 INI File==================//
function INI_Load_Bool(INIFileName, Object_Name: String;
  T_Def: Boolean): Boolean;
var T :TINIFile;
begin
 T       := TINIFile.Create(INIFileName);
Try
  Result := T.ReadBool(Object_Name,'Boolean',T_def);
Finally
  T.Free;
end;
end;
//取回对象 储存相关信息 INI File==================//
function INI_Load_Int(INIFileName, Object_Name: String;
  T_Def: integer): Integer;
var T :TINIFile;
begin
T       := TINIFile.Create(INIFileName);
try
 Result := T.ReadInteger(Object_Name,'Integer',T_Def)
finally
 T.Free;
end;
end;
//取回对象 储存相关信息 INI File==================//
function INI_Load_Object(INIFileName, Object_Name, Obj_Kind,
  T_Def: String): String;
var T :TINIFile;
begin
T        := TINIFile.Create(INIFileName);
Try
  Result :=T.ReadString(Object_Name,Obj_Kind,T_Def);
Finally
 T.Free;
end;
end;
//取回对象 储存相关信息 INI File==================//
function INI_Load_Str2(INIFileName, Object_Name, Obj_Kind,
  T_Def: String): String;
var T :TINIFile;
begin
T        := TINIFile.Create(INIFileName);
Try
  Result :=T.ReadString(Object_Name,Obj_Kind,T_Def);
Finally
 T.Free;
end;
end;

//对象 储存相关信息 INI File==================//
function INI_Load_Str(INIFileName, Object_Name,
  T_Def: String): String;
var  T:TINIFile;
begin
T        := TINIFile.Create(INIFileName);
try
  Result := T.ReadString(Object_Name,'String',T_def);
Finally
  T.Free;
end;
end;
//动态显示时间
Function TimeGetStamp(T2:string):String;
 var
  h1,m1,s1,n1,h2,m2,s2,n2:word;
  hh,mm,ss:Longint;
strtime :Longint;
//  T1:TTime;
begin
// T1 := now;
 Decodetime(now,h1,m1,s1,n1);
 Decodetime(StrtoTime(T2),h2,m2,s2,n2);

{
  if StrLen(Pchar(T1)) = 7 then
   begin
    h1 := copy(T1,1,1);
    m1 := Copy(T1,3,2);
    s1 := Copy(T1,6,2);

  end else begin
    h1 := copy(T1,1,2);
    m1 := Copy(T1,4,2);
    s1 := Copy(T1,7,2);

  end;
  if StrLen(Pchar(T2)) = 7 then
  begin
    h2 := copy(T2,1,1);
    m2 := Copy(T2,3,2);
    s2 := Copy(T2,6,2);
  end else begin
   h2 := copy(T2,1,2);
   m2 := Copy(T2,4,2);
   s2 := Copy(T2,7,2);
  end;

  hh := strtoint(h1)*3600+strtoint(m1)*60+strtoint(s1);
  mm := strtoint(h2)*3600+strtoint(m2)*60+strtoint(s2);
}
  hh := h1*3600+m1*60+s1;
  mm := h2*3600+m2*60+s2;
  if hh > mm then
  strtime :=hh-mm
  else  strtime :=hh-mm+24*3600;
{
  case strtime of
  1..59:    Result := inttoStr(strtime)+'秒';
  60..3599:
    begin
      mm := Strtime div 60;
      ss := Strtime -  mm*60;
      Result := inttoStr(mm) +'分'+inttoStr(ss)+'秒';
    end
  else  begin
}
      hh := Strtime div 3600;
      mm := Strtime mod 3600 div 60 ;
      ss := Strtime mod 60;
      Result := inttoStr(hh) +'小时'
            + inttoStr( mm) +'分'+inttoStr(ss)+'秒';
  end;

// CPU ID ==================================================
FUNCTION IsCPUID_Available : BOOLEAN; register;
asm
  PUSHFD		{direct access to flags no possible, only via 

stack}
  POP     EAX		{flags to EAX}
  MOV     EDX,EAX	{save current flags}
  XOR     EAX,ID_BIT	{not ID bit}
  PUSH    EAX		{onto stack}
  POPFD			{from stack to flags, WITH not ID bit}
  PUSHFD		{back to stack}
  POP     EAX		{get back to EAX}
  XOR     EAX,EDX	{check IF ID bit affected}
  JZ      @exit		{no, CPUID not availavle}
  MOV     AL,TRUE	{Result=TRUE}
  @exit:
END;

FUNCTION GetCPUID : TCPUID; assembler; register;
asm
  PUSH    EBX         {Save affected register}
  PUSH    EDI
  MOV     EDI,EAX     {@Resukt}
  MOV     EAX,1
  DW      $A20F       {CPUID Command}
  STOSD		      {CPUID[1]}
  MOV     EAX,EBX
  STOSD               {CPUID[2]}
  MOV     EAX,ECX
  STOSD               {CPUID[3]}
  MOV     EAX,EDX
  STOSD               {CPUID[4]}
  POP     EDI	      {Restore registers}
  POP     EBX
END;

FUNCTION GetCPUVendor : TVendor; assembler; register;
asm
  PUSH    EBX	      {Save affected register}
  PUSH    EDI
  MOV     EDI,EAX     {@Result (TVendor)}
  MOV     EAX,0
  DW      $A20F	      {CPUID Command}
  MOV     EAX,EBX
  XCHG	  EBX,ECX     {save ECX result}
  MOV	  ECX,4
@1:
  STOSB
  SHR     EAX,8
  LOOP    @1
  MOV     EAX,EDX
  MOV	  ECX,4
@2:
  STOSB
  SHR     EAX,8
  LOOP    @2
  MOV     EAX,EBX
  MOV	  ECX,4
@3:
  STOSB
  SHR     EAX,8
  LOOP    @3
  POP     EDI	     {Restore registers}
  POP     EBX
END;

// 密码---------------------------------------------

{*******************************************************
 * Standard Encryption algorithm - Copied from Borland *
 *******************************************************}
FUNCTION Encrypt(const InSTRING:STRING; 

StartKey,MultKey,AddKey:INTEGER): STRING;
var
  I : Byte;
BEGIN
  Result := '';
  for I := 1 to Length(InSTRING) do
  BEGIN
    Result := Result + CHAR(Byte(InSTRING[I]) xor (StartKey shr 8));
    StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
  END;
END;
{*******************************************************
 * Standard Decryption algorithm - Copied from Borland *
 *******************************************************}
FUNCTION Decrypt(const InSTRING:STRING;

StartKey,MultKey,AddKey:INTEGER): STRING;
var
  I : Byte;
BEGIN
  Result := '';
  for I := 1 to Length(InSTRING) do
  BEGIN
    Result := Result + CHAR(Byte(InSTRING[I]) xor (StartKey shr 8));
    StartKey := (Byte(InSTRING[I]) + StartKey) * MultKey + AddKey;
  END;
END;
//建立新文件=================================//
function File_Create(FileName: String): Boolean;
var FileHandle : Integer;
begin
  FileHandle := FileOpen(FileName,fmOpenWrite);
  FileClose(FileHandle);
  if FileHandle < 0 then
    begin
    FileHandle := FileCreate(FileName);
    FileClose(FileHandle);
    end;
  Result := True;
end;
//清除文件====================================//
function File_Rewrite(FileName: String): Boolean;
var TF :TEXTFILE;
begin
  Result := False;
  if FileExists(FileName) = false then
     begin
     File_Create(FileName);
     Result :=False;
     end;
  if FileExists(FileName) = True then
     begin
     AssignFile(TF,FileName);
     CloseFile(TF);
    Result := True;
     end;
end;
//============================================//
//测试文件是否能打开==========================//
function  TEST_OpenFile(FileName: String): Boolean;
var FileHandle : Integer;
begin
  FileHandle := FileOpen(FileName,fmOpenWrite);
  FileClose(FileHandle);
  if FileHandle <0 then
    begin
    TEST_OpenFile := False;
    MessageBox(0,
      pchar(FileName+'路径文件名设置错误,文件无法打开'),
      '警告',mb_OK+mb_ICONWarning)
    end else begin
    TEST_OpenFile := True;
    end;
end;
//对象 储存相关信息 INI File==================//
function INI_Save_Str(INIFileName, Object_Name,
  T_Str: String): Boolean;
var T :TINIFile;
begin
T := TINIFile.Create(INIFileName);
Try
  T.WriteString(Object_Name,'String',T_Str);
  Result := True;
Finally
  T.Free;
end;
end;
//对象 储存相关信息 INI File==================//
function INI_Save_Str2(INIFileName, Object_Name: String;
Object_Kind:string; T_Str: String): Boolean;
var T :TINIFile;
begin
  T := TINIFile.Create(INIFileName);
  Try
    T.WriteString(Object_Name,Object_kind,T_Str);
    Result := True;
  Finally
    T.Free;
  End;
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -