亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ogutil.pas

?? 詳細的ERP設計資料
?? PAS
字號:
{*********************************************************}
{*                   OGUTIL.PAS 1.13                     *}
{*     Copyright (c) 1996-02 TurboPower Software Co      *}
{*                 All rights reserved.                  *}
{*********************************************************}

{$I ONGUARD.INC}

{$B-} {Complete Boolean Evaluation}
{$I+} {Input/Output-Checking}
{$P+} {Open Parameters}
{$T-} {Typed @ Operator}
{$W-} {Windows Stack Frame}
{$X+} {Extended Syntax}

{$IFNDEF Win32}
{$G+} {286 Instructions}
{$N+} {Numeric Coprocessor}

{$C MOVEABLE,DEMANDLOAD,DISCARDABLE}
{$ENDIF}

unit OgUtil;
  {-general constants, types, and utility routines}

interface

uses
  {$IFDEF Win32} Windows, {$ELSE} WinTypes, WinProcs, OLE2, {$ENDIF}
  SysUtils,
  OgConst,
  OgSrMgr;                                                          {!!.08}

const
  DefAutoCheck      = True;
  DefAutoDecrease   = True;
  DefCheckSize      = True;
  DefStoreCode      = False;
  DefStoreModifier  = False;
  DefStoreRegString = False;

const
  OgVersionStr      = '1.13';



const
  {largest structure that can be created}
  {$IFDEF Win32}
  MaxStructSize = 1024 * 2000000; {2G}
  {$ELSE}
  MaxStructSize = 1024 * 64 - 1;  {64K}
  {$ENDIF}

type
  {$IFNDEF Win32}
  DWord      = LongInt;
  PDWord     = ^DWord;
  TGUID      = GUID;   {Delphi 1.0 defines it as GUID - Delphi 2.0 defines it as TGUID}
  AnsiChar   = Char;
  PAnsiChar  = PChar;
  {$ENDIF}

  PByte         = ^Byte;
  PByteArray    = ^TByteArray;
  TByteArray    = array [0..MaxStructSize div SizeOf(Byte) - 1] of Byte;
  PLongInt      = ^LongInt;
  PLongIntArray = ^TLongIntArray;
  TLongIntArray = array [0..MaxStructSize div SizeOf(LongInt) - 1] of LongInt;

  TLongIntRec = record
    case Byte of
      1: (Lo: Word;
          Hi: Word);
      2: (LoLo: Byte;
          LoHi: Byte;
          HiLo: Byte;
          HiHi: Byte);
  end;


function BufferToHex(const Buf; BufSize : Cardinal) : string;
function BufferToHexBytes(const Buf; BufSize : Cardinal) : string;
{$IFNDEF Win32}
function GetDiskSerialNumber(Drive : AnsiChar) : LongInt;
{$ENDIF}
function HexStringIsZero(const Hex : string) : Boolean;
function HexToBuffer(const Hex : string; var Buf; BufSize : Cardinal) : Boolean;
function Max(A, B : LongInt): LongInt;
function Min(A, B : LongInt) : LongInt;
procedure XorMem(var Mem1; const Mem2; Count : Cardinal);
function OgFormatDate(Value : TDateTime) : string;                     {!!.09}

{file related routines}
function GetFileSize(Handle : THandle) : Cardinal;
{$IFNDEF Win32}
function LockFile(Handle : THandle; FileOffsetLow, FileOffsetHigh,
                  LockCountLow, LockCountHigh : Word) : Boolean;
function UnlockFile(Handle : THandle; FileOffsetLow, FileOffsetHigh,
                    UnLockCountLow, UnLockCountHigh : Word) : Boolean;
function FlushFileBuffers(Handle : THandle) : Boolean;
{$ENDIF}

var
  StrRes : TOgStringResource;                                           {!!.08}

implementation

{$IFDEF TRIALRUN} uses OgTrial; {$ENDIF}

function BufferToHex(const Buf; BufSize : Cardinal) : string;
var
  Bytes : TByteArray absolute Buf;
  I     : LongInt;
begin
  {$IFDEF TRIALRUN}
    _CC_; _VC_;
  {$ENDIF}
  Result := '';
  for I := 0 to BufSize - 1 do
    Result := Result + IntToHex(Bytes[I], 2);
end;

function BufferToHexBytes(const Buf;  BufSize : Cardinal) : string;
var
  Bytes  : TByteArray absolute Buf;
  I      : LongInt;
  HexStr : string;
begin
  {$IFDEF TRIALRUN}
    _CC_; _VC_;
  {$ENDIF}
  {$IFDEF BCB}
  HexStr := '0x';
  {$ELSE}
  HexStr := '$';
  {$ENDIF}
  Result := HexStr + IntToHex(Bytes[0], 2);
  for I := 1 to BufSize - 1 do
    Result := Result + ',' + HexStr + IntToHex(Bytes[I], 2);
end;

{$IFNDEF Win32}
type
  PMediaIDRec = ^TMediaIDRec;
  TMediaIDRec = packed record
    InfoLevel    : Word;                      {reserved for future use}
    SerialNumber : LongInt;                   {disk serial number}
    VolumeLabel  : array[0..10] of AnsiChar;  {disk volume label}
    FileSystemID : array[0..7] of AnsiChar;   {string for internal use by the OS}
  end;

type
  DPMIRegisters = record
    DI : LongInt;
    SI : LongInt;
    BP : LongInt;
    Reserved : LongInt;
    case integer of
    1 : ( BX : LongInt;
          DX : LongInt;
          CX : LongInt;
          AX : LongInt;
          Flags : Word;
          ES : Word;
          DS : Word;
          FS : Word;
          GS : Word;
          IP : Word;
          CS : Word;
          SP : Word;
          SS : Word );
    2 : ( BL, BH : Byte; EBXH : Word;
          DL, DH : Byte; EDXH : Word;
          CL, CH : Byte; ECXH : Word;
          AL, AH : Byte; EAXH : Word );
  end;

  OS = record
    O, S : Word;
  end;

function GetCPUFlags : Byte; assembler;
asm
  lahf
  mov    al,ah
end;

function SimulateRealModeInt(IntNo : Byte; var Regs : DPMIRegisters) : Word; assembler;
asm
  xor     bx,bx
  mov     bl,IntNo
  xor     cx,cx       {StackWords = 0}
  les     di,Regs
  mov     ax,0300h
  int     31h
  jc      @@ExitPoint

  xor     ax,ax
@@ExitPoint:
end;

function GetMediaID(Drive : Byte; var MediaIDRec : TMediaIDRec) : Boolean;
type
  DoubleWord = record LoWord, HiWord : Word; end;
var
  L      : LongInt;
  RP, PP : PMediaIDRec;
  Regs   : DPMIRegisters;
begin
  Result := False;
  L := GlobalDosAlloc(SizeOf(TMediaIDRec));
  if L = 0 then
    Exit;
  try
    RP := Ptr(DoubleWord(L).HiWord, 0);
    PP := Ptr(DoubleWord(L).LoWord, 0);
    FillChar(Regs, SizeOf(Regs), 0);
    with Regs do begin
      DS := OS(RP).S;
      DX := OS(RP).O;
      AX := $440D;
      BX := Drive;
      CX := $0866;
      Flags := GetCPUFlags;
    end;
    SimulateRealModeInt($21, Regs);
    if not Odd(Regs.Flags) then begin
      MediaIDRec := PP^;
      Result := True;
    end;
  finally
    GlobalDosFree(OS(PP).S);
  end;
end;

function GetDiskSerialNumber(Drive : AnsiChar) : LongInt;
var
  MR : TMediaIDRec;
begin
  if GetMediaID(Ord(UpCase(Drive))-Ord('A')+1 ,MR) then
    Result := MR.SerialNumber
  else
    Result := -1;
end;
{$ENDIF}

function HexStringIsZero(const Hex : string) : Boolean;
var
  I   : Integer;
  Str : string;
begin
  Result := False;

  Str := '';
  for I := 1 to Length(Hex) do
    if Upcase(Hex[I]) in ['0'..'9', 'A'..'F'] then
      Str := Str + Hex[I];

  for I := 1 to Length(Str) do
    if Str[I] <> '0' then
      Exit;

  Result := True;
end;

function HexToBuffer(const Hex : string; var Buf; BufSize : Cardinal) : Boolean;
var
  Bytes : TByteArray absolute Buf;
  I, C  : Integer;
  Str   : string;
begin
  {$IFDEF TRIALRUN}
    _CC_; _VC_;
  {$ENDIF}
  Result := False;

  Str := '';
  for I := 1 to Length(Hex) do
    if Upcase(Hex[I]) in ['0'..'9', 'A'..'F'] then
      Str := Str + Hex[I];

  if (Cardinal(Length(Str) div 2) <> BufSize) then                     {!!.07}
    Exit;

  for I := 0 to BufSize - 1 do begin
    Val('$' + Copy(Str, (I shl 1) + 1, 2), Bytes[I], C);
    if (C <> 0) then
      Exit;
  end;

  Result := True;
end;

{$IFDEF Win32}
function Max(A, B : LongInt) : LongInt; register;
asm
  cmp  eax, edx
  jge  @Exit
  mov  eax, edx
@Exit:
end;
{$ELSE}
function Max(A, B : LongInt) : LongInt;
begin
  if A > B then
    Result := A
  else
    Result := B;
end;
{$ENDIF}

{$IFDEF Win32}
function Min(A, B : LongInt) : LongInt; register;
asm
  cmp  eax, edx
  jle  @Exit
  mov  eax, edx
@Exit:
end;
{$ELSE}
function Min(A, B : LongInt) : LongInt;
begin
  if A < B then
    Result := A
  else
    Result := B;
end;
{$ENDIF}

{$IFDEF Win32}
procedure XorMem(var Mem1; const Mem2; Count : Cardinal); register;
asm
  push esi
  push edi

  mov  esi, eax         //esi = Mem1
  mov  edi, edx         //edi = Mem2

  push ecx              //save byte count
  shr  ecx, 2           //convert to dwords
  jz   @Continue

  cld
@Loop1:                 //xor dwords at a time
  mov  eax, [edi]
  xor  [esi], eax
  add  esi, 4
  add  edi, 4
  dec  ecx
  jnz  @Loop1

@Continue:              //handle remaining bytes (3 or less)
  pop  ecx
  and  ecx, 3
  jz   @Done

@Loop2:                 //xor remaining bytes
  mov  al, [edi]
  xor  [esi], al
  inc  esi
  inc  edi
  dec  ecx
  jnz  @Loop2

@Done:
  pop  edi
  pop  esi
end;
{$ELSE}
{!!.02} {revised}
procedure XorMem(var Mem1; const Mem2; Count : Cardinal); assembler;
asm
  push  ds
  push  es
  lds   si, Mem2
  les   di, Mem1
  mov   cx, Count
  jz    @Done
  cld
@Loop1:
  mov  al, ds:[si]
  xor  es:[di], al
  inc  si
  inc  di
  dec  cx
  jnz  @Loop1
@Done:
  pop  es
  pop  ds
end;
{$ENDIF}

{!!.09}
function OgFormatDate(Value : TDateTime) : string;
  {convert date to string with 4-digit year and 2-digit month}
var
  S : string;
begin
  S := ShortDateFormat;
  if Pos('yyyy', S) = 0 then
    Insert('yy', S, Pos('yy', S));
  if Pos('MMM', S) > 0 then
    Delete(S, Pos('MMM', S), 1);
  Result := FormatDateTime(S, Value)
end;


{file related routines}
function GetFileSize(Handle : THandle) : Cardinal;
{$IFDEF Win32}
begin
  Result := Windows.GetFileSize(Handle, nil);
{$ELSE}
var
  Save : LongInt;
begin
  Save := FileSeek(Handle, 0, 0);     {save current file position}
  Result := FileSeek(Handle, 0, 2);   {get file size}
  FileSeek(Handle, Save, 0);          {restore previous position}
{$ENDIF}
end;

{$IFNDEF Win32}
function LockFile(Handle : THandle;
                  FileOffsetLow, FileOffsetHigh,
                  LockCountLow, LockCountHigh : Word) : Boolean;
var
  Error : Word;
begin
  asm
    mov   ax,$5C00
    mov   bx,Handle
    mov   cx,FileOffsetHigh
    mov   dx,FileOffsetLow
    mov   si,LockCountHigh
    mov   di,LockCountLow
    int   $21
    jc    @@001
    xor   ax,ax
  @@001:
    mov   Error,ax
  end;
  Result := Error = 0;
end;

function UnlockFile(Handle : THandle;
                    FileOffsetLow, FileOffsetHigh,
                    UnLockCountLow, UnLockCountHigh : Word) : Boolean;
var
  Error : Word;
begin
  asm
    mov   ax, $5C01
    mov   bx,Handle
    mov   cx,FileOffsetHigh
    mov   dx,FileOffsetLow
    mov   si,UnLockCountHigh
    mov   di,UnLockCountLow
    int   $21
    jc    @@001
    xor   ax, ax
  @@001:
    mov   Error, ax
  end;
  Result := Error = 0;
end;

function FlushFileBuffers(Handle : THandle) : Boolean;
var
  Error : Word;
begin
  asm
    mov   ah, $68
    mov   bx, Handle
    int   $21
    jc    @@001
    xor   ax, ax
  @@001:
    mov   Error, ax
  end;
  Result := Error = 0;
end;
{$ENDIF}

(*
{$IFDEF Win32}
function RolByteX(I, C : Byte) : Byte; register;
asm
  mov  cl, dl
  rol  al, cl
end;
{$ELSE}
function RolByteX(I, C : Byte) : Byte; assembler;
asm
  mov  al, I
  mov  cl, C
  rol  al, cl
end;
{$ENDIF}
*)

procedure FreeStrRes; far;
begin
  StrRes.Free;
  StrRes := nil;
end;

initialization
  StrRes := TOgStringResource.Create(HInstance, 'ONGUARD_STRINGS_ENGLISH');  {!!.08}

{$IFDEF Win32}
finalization
  FreeStrRes;
{$ELSE}
  AddExitProc(FreeStrRes);
{$ENDIF}
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品国产97久久久久久久久久久久 | 午夜精品一区在线观看| 色狠狠色狠狠综合| 亚洲成人综合视频| 日韩你懂的在线播放| 韩国精品免费视频| 1024成人网| 欧美三级在线播放| 老汉av免费一区二区三区| 久久丝袜美腿综合| 一本到高清视频免费精品| 亚洲国产成人精品视频| 精品国产三级电影在线观看| 国产福利一区二区三区视频在线| 国产精品久久久久影视| 欧美探花视频资源| 精品在线你懂的| 亚洲欧洲三级电影| 9191成人精品久久| 成人中文字幕合集| 五月激情六月综合| 国产欧美精品在线观看| 在线观看免费视频综合| 精品一区二区三区久久久| 亚洲欧美一区二区三区国产精品| 欧美日本一区二区在线观看| 国产一区二区在线电影| 亚洲欧美国产毛片在线| 日韩欧美中文字幕一区| 99国产精品久久久久久久久久久| 天天色图综合网| 中文字幕国产一区| 欧美人妖巨大在线| 99久久免费视频.com| 麻豆视频观看网址久久| 亚洲欧美偷拍三级| 久久婷婷色综合| 欧美日韩成人高清| 91在线观看美女| 国产在线视频精品一区| 亚洲一区在线视频| 日本一区二区高清| 日韩欧美亚洲国产精品字幕久久久| 成人开心网精品视频| 五月激情综合婷婷| 亚洲一区在线看| 亚洲视频电影在线| 国产亚洲综合性久久久影院| 制服.丝袜.亚洲.中文.综合| 97久久超碰国产精品电影| 国产美女久久久久| 蜜桃一区二区三区四区| 亚洲高清视频在线| 亚洲女同一区二区| 亚洲国产精品国自产拍av| 精品少妇一区二区三区日产乱码| 欧洲精品一区二区三区在线观看| 丁香另类激情小说| 国产精品一区二区不卡| 美女性感视频久久| 男人操女人的视频在线观看欧美| 一片黄亚洲嫩模| 亚洲三级电影全部在线观看高清| 久久久精品综合| 久久夜色精品国产欧美乱极品| 欧美一区二区在线免费播放| 欧美日本精品一区二区三区| 欧美亚一区二区| 欧洲激情一区二区| 欧美三级在线看| 欧美日韩另类一区| 欧美日韩国产三级| 欧美电影在线免费观看| 欧美福利视频一区| 4438x亚洲最大成人网| 欧美日韩亚洲丝袜制服| 精品视频免费在线| 欧美久久婷婷综合色| 欧美亚洲国产怡红院影院| 欧美午夜精品电影| 91精品麻豆日日躁夜夜躁| 91精品欧美福利在线观看| 欧美久久久久久久久| 欧美高清一级片在线| 制服丝袜亚洲精品中文字幕| 日韩亚洲欧美高清| 精品福利av导航| 国产女同性恋一区二区| 中文字幕不卡在线观看| 综合久久久久久| 亚洲裸体xxx| 亚洲国产成人精品视频| 青青青爽久久午夜综合久久午夜| 日韩avvvv在线播放| 国产一区 二区| 91香蕉视频黄| 6080日韩午夜伦伦午夜伦| 精品人伦一区二区色婷婷| 国产亚洲精品中文字幕| 亚洲欧洲成人av每日更新| 亚洲午夜久久久久中文字幕久| 五月婷婷久久综合| 国产在线国偷精品免费看| 成人黄色软件下载| 欧美日韩午夜在线| 亚洲精品在线观看视频| 中文字幕永久在线不卡| 天堂资源在线中文精品| 国产精品一区二区男女羞羞无遮挡| 成人av在线看| 欧美一区午夜精品| 综合色天天鬼久久鬼色| 日产国产高清一区二区三区| 国产精品99久| 欧美人妇做爰xxxⅹ性高电影| 精品国产凹凸成av人网站| 亚洲三级电影网站| 久久99精品国产麻豆婷婷洗澡| 99国产精品国产精品毛片| 欧美一区二区不卡视频| 综合激情网...| 免费观看日韩av| 色婷婷精品大视频在线蜜桃视频| 日韩午夜激情免费电影| 亚洲女厕所小便bbb| 国产麻豆精品久久一二三| 欧美在线免费观看视频| 久久久蜜桃精品| 日韩经典一区二区| 91在线播放网址| 国产亚洲欧洲997久久综合| 视频一区二区三区中文字幕| 99视频一区二区三区| 精品日韩一区二区| 午夜国产不卡在线观看视频| 成人永久免费视频| 精品理论电影在线观看| 亚洲午夜精品网| 99久久精品国产导航| 2020国产精品自拍| 日韩和欧美的一区| 色又黄又爽网站www久久| 国产精品网站一区| 国产一区二区三区不卡在线观看| 宅男在线国产精品| 亚洲高清在线精品| 在线观看日韩精品| 亚洲色图欧美激情| 成人动漫av在线| 久久久久久黄色| 精品一区二区影视| 日韩一级黄色片| 日韩电影免费在线观看网站| 日本韩国一区二区| 综合久久久久久| 99久久国产综合精品麻豆| 久久久精品2019中文字幕之3| 免费观看91视频大全| 538prom精品视频线放| 丝袜美腿亚洲一区| 69堂精品视频| 免费不卡在线视频| 日韩美女主播在线视频一区二区三区 | 色94色欧美sute亚洲线路一久| 国产精品入口麻豆九色| 成人黄色网址在线观看| 国产精品久久看| 91污在线观看| 亚洲美女视频一区| 欧美午夜影院一区| 亚洲v日本v欧美v久久精品| 欧美午夜精品一区二区三区| 亚洲宅男天堂在线观看无病毒 | 在线观看日韩av先锋影音电影院| 中文字幕一区二区三区色视频| av日韩在线网站| 亚洲理论在线观看| 欧美老人xxxx18| 免费高清在线一区| 久久精品日产第一区二区三区高清版 | 欧美亚洲综合一区| 人妖欧美一区二区| 精品伦理精品一区| 高清日韩电视剧大全免费| 日韩一区日韩二区| 欧美日韩视频在线一区二区| 美女诱惑一区二区| 亚洲国产岛国毛片在线| 一本久道中文字幕精品亚洲嫩| 亚洲高清久久久| 欧美大片在线观看一区二区| 丁香五精品蜜臀久久久久99网站 | 国产精品中文有码| 国产精品久久久久9999吃药| 色综合天天狠狠| 美国十次综合导航| 中文字幕视频一区二区三区久| 欧美午夜精品一区| 国产精品99久久久久久宅男| 亚洲六月丁香色婷婷综合久久|