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

📄 u_sharefun.pas

📁 河南师范大学餐饮进销存软件,只要控制库存的数据。
💻 PAS
字号:
unit u_ShareFun;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry, SHELLAPI;

// CPU ID 专用变量========================================
CONST
  ID_BIT = $200000 ;
TYPE
  TCPUID  = ARRAY[1..4]  OF LONGINT;
  TVENDOR = ARRAY[0..11] OF CHAR;

//========================================================

  // CPU 信息专用函数=======================================
  FUNCTION IsCPUID_Available : BOOLEAN ; register;
  FUNCTION GetCPUID : TCPUID ; assembler ; register;
  FUNCTION GetCPUVendor : TVendor ; assembler ; register;
  //========================================================

  FUNCTION REGISTER_JXC_CREATER(T_REG_NAME:STRING):BOOLEAN;
  FUNCTION REGISTER_JXC_REGISTER(T_REG_NAME,T_SF_ID:STRING):BOOLEAN;
  FUNCTION REGISTER_KEY_VALUE_STR(T_REG_NAME,T_KEY:STRING):STRING;
  FUNCTION REGISTER_KEY_VALUE_INT(T_REG_NAME,T_KEY:STRING):INTEGER;
  FUNCTION REGISTER_NUMBER_JXC(CPU_ID:LONGINT):STRING;
  FUNCTION REGISTER_KEY_VALUE_DATE(T_REG_NAME,T_KEY:STRING):TDATE;
  FUNCTION REGISTER_KEY_CHECK(T_REG_NAME:STRING):BOOLEAN;
  FUNCTION REGISTER_KEY_CREATE(T_REG_NAME:STRING):BOOLEAN;
  FUNCTION REGISTER_KEY_DELETE(T_REG_NAME:STRING):BOOLEAN;

  // 判断字符是否是数字
  function IsNumeric(Data: string) : boolean;
  PROCEDURE OPENCASHBOX();

VAR
  IsJXCAvailable : Boolean ;
  JXC_UserBH     : String ;
  JXC_UserName   : String ;
  JXC_Temp       : String ;


implementation

FUNCTION IsCPUID_Available : BOOLEAN ; register;
asm
  PUSHFD    {direct access to flags no possible, only via stack}
  POP       EAX
  MOV       EDX,EAX
  XOR       EAX,ID_BIT
  PUSH      EAX
  POPFD
  PUSHFD
  POP       EAX
  XOR       EAX,EDX
  JZ        @EXIT
  MOV       AL,TRUE
  @EXIT:
END;

FUNCTION GetCPUID : TCPUID ; assembler ; register;
asm
  PUSH     EBX
  PUSH     EDI
  MOV      EDI,EAX
  MOV      EAX,1
  DW       $A20F
  STOSD
  MOV      EAX,ECX
  STOSD
  POP      EDI
  POP      EBX
END;

FUNCTION GetCPUVendor : TVendor ; assembler ; register;
asm
  PUSH     EBX
  PUSH     EDI
  MOV      EDI,EAX
  MOV      EAX,0
  DW       $A20F
  MOV      EAX,EBX
  XCHG     EBX,ECX
  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
  POP      EBX
END;

FUNCTION REGISTER_JXC_CREATER(T_REG_NAME:STRING):BOOLEAN;
VAR
  REG:TRegistry;
BEGIN
  REG:=TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    IF Reg.OpenKey(T_REG_NAME,TRUE) THEN
       BEGIN
         Reg.WriteDate('RUN_FIRST_DATE',DATE);
         Reg.WriteInteger('CPU_ID'     ,GetCPUID[4]);
         Reg.WriteString('SF_ID'       ,'');
         RESULT :=TRUE;
       END
    ELSE
       RESULT :=FALSE;
  FINALLY
    Reg.CloseKey;
    Reg.Free;
  END;
END;

FUNCTION REGISTER_JXC_REGISTER(T_REG_NAME,T_SF_ID:STRING):BOOLEAN;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    IF REG.OpenKey(T_REG_NAME,TRUE) THEN
       BEGIN
         REG.WriteString('SF_ID',T_SF_ID);
         RESULT:=TRUE;
       END
    ELSE
       RESULT:=FALSE;
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

FUNCTION REGISTER_KEY_VALUE_STR(T_REG_NAME,T_KEY:STRING):STRING;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    IF REG.OpenKey(T_REG_NAME,TRUE) THEN
       RESULT:=REG.ReadString(T_KEY);
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

FUNCTION REGISTER_KEY_VALUE_INT(T_REG_NAME,T_KEY:STRING):INTEGER;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    IF REG.OpenKey(T_REG_NAME,TRUE) THEN
       RESULT:=REG.ReadInteger(T_KEY);
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

FUNCTION REGISTER_NUMBER_JXC(CPU_ID:LONGINT):STRING;
VAR
  T_REG:LONGINT;
BEGIN
  T_REG:=(((CPU_ID*6)+6)*6)+6;
  RESULT:=COPY(INTTOSTR(T_REG),1,8);
END;

FUNCTION REGISTER_KEY_VALUE_DATE(T_REG_NAME,T_KEY:STRING):TDATE;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    IF REG.OpenKey(T_REG_NAME,TRUE) THEN
       RESULT:=REG.ReadDate(T_KEY);
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

FUNCTION REGISTER_KEY_CHECK(T_REG_NAME:STRING):BOOLEAN;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    IF REG.OpenKey(T_REG_NAME,TRUE) THEN
       RESULT:=REG.ValueExists('CPU_ID');
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

FUNCTION REGISTER_KEY_CREATE(T_REG_NAME:STRING):BOOLEAN;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    REG.OpenKey(T_REG_NAME,TRUE);
    RESULT:=TRUE;
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

FUNCTION REGISTER_KEY_DELETE(T_REG_NAME:STRING):BOOLEAN;
var
  REG:TREGISTRY;
BEGIN
  REG:=TREGISTRY.Create;
  TRY
    REG.RootKey:=HKEY_CURRENT_USER;
    REG.DeleteKey(T_REG_NAME);
    RESULT:=TRUE;
  FINALLY
    REG.CloseKey;
    REG.Free;
  END;
END;

function IsNumeric(Data: string) : boolean;
var
  i, code : integer;
  r : real ;
begin
  val(data, r, code);
  if code = 0 then
    result := true
  else
    result := false;
end;

PROCEDURE OPENCASHBOX();
var
  strPath:string;
begin
  strPath:=ExtractFilePath(Application.ExeName);
  strPath:=strPath+'\OpenCashBox.exe';
  if not FileExists(strPath) then
    begin
      MessageBox(GetActiveWindow(),'钱箱驱动文件丢失!',PChar(Application.Title),MB_OK+MB_ICONINFORMATION);
      Exit;
    end;
  ShellExecute(0,nil,PChar(strPath),nil,nil,SW_SHOWNORMAL);
end;

end.

⌨️ 快捷键说明

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