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

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

?? hutil32.pas

?? 傳奇客戶端
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
unit HUtil32;

//============================================
// Latest Update date : 1998 1
// Add/Update Function and procedure :
// 		CaptureString
//       Str_PCopy          	(4/29)
//			Str_PCopyEx			 	(5/2)
//			memset					(6/3)
//       SpliteBitmap         (9/3)
//       ArrestString         (10/27)  {name changed}
//       IsStringNumber       (98'1/1)
//			GetDirList				(98'12/9)
//       GetFileDate          (98'12/9)
//       CatchString          (99'2/4)
//       DivString            (99'2/4)
//       DivTailString        (99'2/4)
//       SPos                 (99'2/9)
//============================================


interface

uses
	Classes, Math, SysUtils, StrUtils, WinTypes, WinProcs, Graphics, Messages, Dialogs;

type
	Str4096 = array [0..4096] of char;
   Str256 = array [0..256] of char;
   TyNameTable = record
   	Name: string;
      varl:	Longint;
   end;

   TLRect = record
   	Left, Top, Right, Bottom: Longint;
   end;

const
	MAXDEFCOLOR			= 16;
	ColorNames: array [1..MAXDEFCOLOR] of TyNameTable = (
   	(Name: 'BLACK'; 		varl: clBlack),
      (Name: 'BROWN';		varl: clMaroon),
      (Name: 'MARGENTA';	varl: clFuchsia),
      (Name: 'GREEN';		varl: clGreen),
      (Name: 'LTGREEN';		varl: clOlive),
      (Name: 'BLUE';			varl: clNavy),
      (Name: 'LTBLUE';		varl: clBlue),
      (Name: 'PURPLE';		varl: clPurple),
      (Name: 'CYAN';			varl: clTeal),
      (Name: 'LTCYAN';		varl: clAqua),
      (Name: 'GRAY';			varl: clGray),
      (Name: 'LTGRAY';		varl: clsilver),
      (Name: 'YELLOW';		varl: clYellow),
      (Name: 'LIME';			varl: clLime),
      (Name: 'WHITE';		varl: clWhite),
      (Name: 'RED';			varl: clRed)
   );

   MAXLISTMARKER    = 3;
   LiMarkerNames: array [1..MAXLISTMARKER] of TyNameTable = (
   	(Name: 'DISC';			varl: 0),
      (Name: 'CIRCLE';		varl: 1),
      (Name: 'SQUARE';		varl: 2)
   );

   MAXPREDEFINE    = 3;
   PreDefineNames: array [1..MAXPREDEFINE] of TyNameTable = (
   	(Name: 'LEFT';			varl: 0),
      (Name: 'RIGHT';		varl: 1),
      (Name: 'CENTER';		varl: 2)
   );




function CountGarbage (paper: TCanvas; Src: PChar; TargWidth: Longint): integer; {garbage}
{[ArrestString]
      Result = Remain string,
      RsltStr = captured string
}
function  ArrestString (Source, SearchAfter, ArrestBefore: string;
					  const DropTags: array of string; var RsltStr: string): string;
{*}
function  ArrestStringEx (Source, SearchAfter, ArrestBefore: string; var ArrestStr: string): string;
function  CaptureString (source: string; var rdstr: string): string;
procedure ClearWindow (aCanvas: TCanvas; aLeft, aTop, aRight, aBottom:Longint; aColor: TColor);
function  CombineDirFile (SrcDir, TargName: string): string;
function  TagCount(source: string; tag: char): integer;
{*}
function  CompareLStr (src, targ: string; compn: integer): Boolean;
function  CompareBackLStr (src, targ: string; compn: integer): Boolean;
function  CompareBuffer (p1, p2: PByte; len: integer): Boolean;
function  CreateMask (Src: PChar; TargPos: Integer): string;
procedure DrawTileImage (Canv: TCanvas; Rect: TRect; TileImage: TBitmap);
procedure DrawingGhost (Rc: TRect);
function  ExtractFileNameOnly (const fname: string): string;
function  FloatToString (F: Real): string;
function  FloatToStrFixFmt (fVal: Double; prec, digit: Integer): string;
function  FileSize (const FName: string): Longint;
{*}
function  FileCopy(source,dest: String): Boolean;
function  FileCopyEx(source,dest: String): Boolean;
function  GetSpaceCount (Str: string): Longint;
function  RemoveSpace (str: string): string;
function  GetFirstWord (Str: string; var sWord: string; var FrontSpace: Longint): string;
function  GetDefColorByName (Str: string): TColor;
function  GetULMarkerType (Str: string): Longint;
{*}
function  GetValidStr3 (Str: string; var Dest: string; const Divider: array of Char): string;
function  GetValidStr4 (Str: string; var Dest: string; const Divider: array of Char): string;
function  GetValidStrVal (Str: string; var Dest: string; const Divider: array of Char): string;
function  GetValidStrCap (Str: string; var Dest: string; const Divider: array of Char): string;
function  GetStrToCoords (Str: string): TRect;
function  GetDefines (Str: string): Longint;
function  GetValueFromMask (Src: PChar; Mask: string): string;
procedure GetDirList (path: string; fllist: TStringList);
function  GetFileDate (filename: string): integer; //DOS format file date..
function  HexToIntEx (shap_str: string): Longint;
function  HexToInt( str: string ): LongInt;
function  IntToStr2(n: integer): string;
function  IntToStrFill (num, len: integer; fill: char): string;
function  IsInB (Src: string; Pos: integer; Targ: string): Boolean;
function  IsInRect (X, Y: integer; Rect: TRect): Boolean;
function  IsEnglish (Ch: Char): Boolean;
function  IsEngNumeric (Ch: Char): Boolean;
function  IsEnglishStr (sEngStr:String): Boolean;
function  IsFloatNumeric (str: string): Boolean;
function  IsUniformStr (src: string; ch: char): Boolean;
function  IsStringNumber (str: string): boolean;
function  KillFirstSpace (var Str: string): Longint;
procedure KillGabageSpace (var Str: string);
function  LRect (l, t, r, b: Longint): TLRect;
procedure MemPCopy (Dest: PChar; Src: string);
procedure MemCpy (Dest, Src: PChar; Count: Longint);                {PChar type}
procedure memcpy2 (TargAddr, SrcAddr: Longint; count: integer);     {Longint type}
procedure memset (buffer: PChar; fillchar: char; count: integer);
procedure PCharSet (P: PChar; n: integer; ch: char);
function  ReplaceChar (src: string; srcchr, repchr: char): string;
function  Str_ToDate (str: string): TDateTime;
function  Str_ToTime (str: string): TDateTime;
function  Str_ToInt (Str: string; def: Longint): Longint;
function  Str_ToFloat (str: string): Real;
function  SkipStr (Src: string; const Skips: array of char): string;
procedure ShlStr (Source: PChar; count: integer);
procedure ShrStr (Source: PChar; count: integer);
procedure Str256PCopy (Dest: PChar; const Src: string);
function  _StrPas (dest: PChar): string;
function  Str_PCopy (dest: PChar; src: string): integer;
function  Str_PCopyEx (dest: PChar; const src: string; buflen: longint): integer;
procedure SpliteBitmap (DC: HDC; X, Y: integer; bitmap: TBitmap; transcolor: TColor);
procedure TiledImage (Canv: TCanvas; Rect: TLRect; TileImage: TBitmap);
function  Trim_R (const str: string): string;
function  IsEqualFont (SrcFont, TarFont: TFont): Boolean;
function  CutHalfCode (Str: string): string;
function  ConvertToShortName(Canvas : TCanvas; Source : string; WantWidth : integer) : string;
{*}
function  CatchString (source: string; cap: char; var catched: string): string;
function  DivString (source: string; cap: char; var sel: string): string;
function  DivTailString (source: string; cap: char; var sel: string): string;
function  SPos (substr, str: string): integer;
function  NumCopy (str: string): integer;
function  GetMonDay: string;
function  GetDayCount(MaxDate,MinDate:TDateTime):Integer;
function  BoolToStr(boo: Boolean): string;
function  BoolToIntStr(b:Boolean):string;
function  BoolToCStr(b:Boolean):String;

function _MIN (n1, n2: integer): integer;
function _MAX (n1, n2: integer): integer;

procedure CenterDialog(hParentWnd, hWnd: HWnd);
function  IsIPaddr(IP: string):boolean;

function  CalcFileCRC(FileName:String):Integer;
function  CalcBufferCRC(Buffer:PChar;nSize:Integer):Integer;

//Damian - These 2 functions are same, so use either
function  GetCodeMsgSize(X: Double):Integer;
function  UpInt(i:double):integer;

implementation

//var
//	CSUtilLock: TRTLCriticalSection;

{ capture "double quote streams" }

function  CaptureString (source: string; var rdstr: string): string;
var
	st, et, c, len, i: integer;
begin
   if source = '' then begin
   	rdstr := ''; Result := '';
      exit;
   end;
	c := 1;
   //et := 0;
   len := Length (source);
	while source[c] = ' ' do
      if c < len then Inc (c)
      else break;

   if (source[c] = '"') and (c < len) then begin

      st := c+1;
      et := len;
    	for i:=c+1 to len do
      	if source[i] = '"' then begin
            et := i-1;
         	break;
         end;

   end else begin
   	st := c;
      et := len;
      for i:=c to len do
      	if source[i] = ' ' then begin
         	et := i-1;
            break;
         end;

   end;

   rdstr := Copy (source, st, (et-st+1));
   if len >= (et+2) then
   	Result := Copy (source, et+2, len-(et+1)) else
      Result := '';

end;


function CountUglyWhiteChar (sPtr: PChar): Longint;
var
   Cnt, Killw: Longint;
begin
   Killw := 0;
   for Cnt := (StrLen(sPtr)-1) downto 0 do begin
      if sPtr[Cnt] = ' ' then begin
         Inc (KillW);
         {sPtr[Cnt] := #0;}
      end else break;
   end;
   Result := Killw;
end;


function CountGarbage (paper: TCanvas; Src: PChar; TargWidth: Longint): integer; {garbage}
var
	gab, destWidth: integer;
begin

   gab := CountUglyWhiteChar (Src);
   destWidth := paper.TextWidth(StrPas (Src)) - gab;
   Result := TargWidth - DestWidth + (gab * paper.TextWidth(' '));

end;


function GetSpaceCount (Str: string): Longint;
var
	Cnt, Len, SpaceCount: Longint;
begin
	SpaceCount := 0;
	Len := Length (Str);
   for Cnt := 1 to Len do
     	if Str[Cnt] = ' ' then SpaceCount := SpaceCount + 1;
   Result := SpaceCount;
end;

function  RemoveSpace (str: string): string;
var
   i: integer;
begin
   Result := '';
   for i:=1 to Length(str) do
      if str[i] <> ' ' then
         Result := Result + str[i];
end;

function KillFirstSpace (var Str: string): Longint;
var
	Cnt, Len: Longint;
begin
   Result := 0;
   Len := Length (Str);
	for Cnt := 1 to Len do
   	if Str[Cnt] <> ' ' then begin
         Str := Copy (Str, Cnt, Len-Cnt+1);
         Result := Cnt-1;
         break;
      end;
end;

procedure KillGabageSpace (var Str: string);
var
	Cnt, Len: Longint;
begin
   Len := Length (Str);
	for Cnt := Len downto 1 do
   	if Str[Cnt] <> ' ' then begin
         Str := Copy (Str, 1, Cnt);
         KillFirstSpace (Str);
         break;
      end;
end;

function GetFirstWord (Str: string; var sWord: string; var FrontSpace: Longint): string;
var
   Cnt, Len, N: Longint;
   DestBuf: Str4096;
begin
   Len := Length (Str);
   if Len <= 0 then
   	Result := ''
   else begin
   	FrontSpace := 0;
      for Cnt := 1 to Len do begin
         if Str[Cnt] = ' ' then Inc (FrontSpace)
         else break;
      end;
      N := 0;
      for Cnt := Cnt to Len do begin
         if Str[Cnt] <> ' ' then
            DestBuf[N] := Str[Cnt]
         else begin
            DestBuf[N] := #0;
            sWord := StrPas (DestBuf);
            Result := Copy (Str, Cnt, Len-Cnt+1);
            exit;
         end;
         Inc (N);
      end;
      DestBuf[N] := #0;
      sWord := StrPas (DestBuf);
      Result := '';
   end;
end;

function HexToIntEx (shap_str: string): Longint;
begin
   Result := HexToInt (Copy (Shap_str, 2, Length(Shap_str)-1));
end;

function HexToInt( str: string ): LongInt;
var
   digit: Char;
   count, i: Integer;
   Cur, Val: LongInt;
begin
   Val := 0;
   count := Length(str);
   for i := 1 to count do begin
      digit := str[i];
           if (digit >= '0') and (digit <= '9') then Cur := Ord(digit) - Ord('0')
      else if (digit >= 'A') and (digit <= 'F') then Cur := Ord(digit) - Ord('A') + 10
      else if (digit >= 'a') and (digit <= 'f') then Cur := Ord(digit) - Ord('a') + 10
      else Cur := 0;
      Val := Val + (Cur shl (4*(count-i)));
   end;
   Result := Val;
//   Result := (Val and $0000FF00) or ((Val shl 16) and $00FF0000) or ((Val shr 16) and $000000FF);
end;

function Str_ToInt (Str: string; def: Longint): Longint;
begin
   Result := def;
   if Str <> '' then begin
      if ((word(Str[1]) >= word('0')) and (word(str[1]) <= word('9'))) or
         (str[1] = '+') or (str[1] = '-') then
         try
            Result := StrToInt64 (Str);
         except
         end;
   end;
end;

function Str_ToDate (Str: string): TDateTime;
begin
   if Trim(Str) = '' then Result := Date
   else
      Result := StrToDate (str);
end;

function Str_ToTime (Str: string): TDateTime;
begin
   if Trim(Str) = '' then Result := Time
   else
      Result := StrToTime (str);
end;

function Str_ToFloat (str: string): Real;
begin
   if str <> '' then
      try
         Result := StrToFloat (str);
         exit;
      except
      end;
	Result := 0;
end;

procedure DrawingGhost (Rc: TRect);
var
	DC: HDC;
begin
   DC := GetDC (0);
   DrawFocusRect (DC, Rc);
   ReleaseDC (0, DC);
end;

function  ExtractFileNameOnly (const fname: string): string;
var
   extpos: integer;
   ext, fn: string;
begin
   ext := ExtractFileExt (fname);
   fn := ExtractFileName (fname);
   if ext <> '' then begin
      extpos := pos (ext, fn);
      Result := Copy (fn, 1, extpos-1);
   end else
      Result := fn;
end;

function FloatToString (F: Real): string;
begin
	Result := FloatToStrFixFmt (F, 5, 2);
end;

function FloatToStrFixFmt (fVal: Double; prec, digit: Integer): string;
var
   cnt, dest, Len, I, j: Integer;
   fstr: string;
   Buf: array[0..255] of char;
label end_conv;
begin
   cnt := 0;  dest := 0;
   fstr := FloatToStrF ( fVal, ffGeneral, 15, 3 );
   Len  := Length (fstr);
   for i:=1 to Len do begin
      if fstr[i]='.' then begin
         Buf[dest] := '.'; Inc(dest);
         cnt := 0;
         for j:=i+1 to Len do begin
            if cnt < digit then begin
               Buf[dest] := fstr[j]; Inc(dest);
            end
            else begin
               goto end_conv;
            end;
            Inc(cnt);
         end;
         goto end_conv;
      end;
      if cnt < prec then begin
         Buf[dest] := fstr[i]; Inc(dest);
      end;
      Inc(cnt);
   end;
   end_conv:
   Buf[dest] := char(0);
   Result := strPas(Buf);
end;


function  FileSize (const FName: string): Longint;
var
  SearchRec: TSearchRec;
begin
  if FindFirst(ExpandFileName(FName), faAnyFile, SearchRec) = 0 then
    Result := SearchRec.Size
  else Result := -1;
end;


function FileCopy(source,dest: String): Boolean;
var
  fSrc,fDst,len: Integer;
  size: Longint;
  buffer: packed array [0..2047] of Byte;
begin
  Result := False; { Assume that it WONT work }
  if source <> dest then begin
    fSrc := FileOpen(source,fmOpenRead);
    if fSrc >= 0 then begin
      size := FileSeek(fSrc,0,2);
      FileSeek(fSrc,0,0);
      fDst := FileCreate(dest);
      if fDst >= 0 then begin
        while size > 0 do begin
          len := FileRead(fSrc,buffer,sizeof(buffer));
          FileWrite(fDst,buffer,len);
          size := size - len;
        end;
        FileSetDate(fDst,FileGetDate(fSrc));
        FileClose(fDst);
        FileSetAttr(dest,FileGetAttr(source));
        Result := True;
      end;
      FileClose(fSrc);
    end;
  end;
end;

function FileCopyEX(source,dest: String): Boolean;
var
  fSrc,fDst,len: Integer;
  size: Longint;
  buffer: array [0..512000] of Byte;
begin
  Result := False; { Assume that it WONT work }
  if source <> dest then begin
    fSrc := FileOpen(source,fmOpenRead or fmShareDenyNone);
    if fSrc >= 0 then begin
      size := FileSeek(fSrc,0,2);
      FileSeek(fSrc,0,0);
      fDst := FileCreate(dest);
      if fDst >= 0 then begin
        while size > 0 do begin
          len := FileRead(fSrc,buffer,sizeof(buffer));
          FileWrite(fDst,buffer,len);
          size := size - len;
        end;
        FileSetDate(fDst,FileGetDate(fSrc));
        FileClose(fDst);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91热久久久做人人| 激情六月婷婷久久| 亚洲第一福利视频在线| 免费高清成人在线| 成人av资源站| 欧美顶级少妇做爰| 久久久午夜电影| 一区二区三区**美女毛片| 蜜臂av日日欢夜夜爽一区| 成人福利在线看| 3751色影院一区二区三区| 国产网站一区二区三区| 亚洲第一福利一区| 懂色av一区二区三区蜜臀| 欧美日韩亚洲另类| 日本一区二区成人| 日韩av一区二区三区四区| 成人免费黄色大片| 欧美一区二区三区不卡| 日韩一区中文字幕| 丝袜脚交一区二区| 成人高清视频免费观看| 欧美一二三四区在线| 国产精品久久久久影院老司| 日韩和欧美一区二区| jiyouzz国产精品久久| 日韩午夜激情视频| 一区二区三区在线视频观看58 | 9i看片成人免费高清| 日韩一区二区在线免费观看| 国产精品毛片无遮挡高清| 老司机精品视频线观看86| 在线视频亚洲一区| 中文字幕国产一区| 国精产品一区一区三区mba视频 | 亚洲成人在线网站| av电影在线观看一区| 精品成人在线观看| 亚洲国产精品视频| 色狠狠综合天天综合综合| 欧美韩日一区二区三区四区| 久久精品国产精品亚洲精品| 欧美三级日韩在线| 亚洲欧美日韩一区| 成人av免费在线观看| 久久精品亚洲乱码伦伦中文| 蜜桃视频一区二区三区在线观看| 欧美在线观看视频在线| 亚洲伦理在线精品| 99re这里只有精品首页| 欧美激情综合网| 韩国成人福利片在线播放| 91精品国产色综合久久久蜜香臀| 夜夜亚洲天天久久| 91毛片在线观看| 国产精品国产自产拍在线| 国产盗摄精品一区二区三区在线 | 激情深爱一区二区| 欧美一区二区视频在线观看| 亚洲国产欧美一区二区三区丁香婷 | 欧美午夜电影在线播放| 一区二区在线看| 91蜜桃在线观看| 中文字幕亚洲成人| 91亚洲精品久久久蜜桃| 亚洲人妖av一区二区| av在线不卡观看免费观看| 国产精品全国免费观看高清 | 国产精品国产三级国产aⅴ原创 | 亚洲人午夜精品天堂一二香蕉| 成人三级在线视频| 欧美韩国日本综合| 北条麻妃国产九九精品视频| 国产精品视频一二三区| 国产成人99久久亚洲综合精品| 久久青草欧美一区二区三区| 国产精品91xxx| 国产日产欧美一区二区视频| 国产精品99久久久| 中文字幕一区二区日韩精品绯色| av不卡在线播放| 亚洲女女做受ⅹxx高潮| 在线观看亚洲精品| 午夜不卡av在线| 制服丝袜日韩国产| 久久er99热精品一区二区| 精品成人一区二区三区四区| 国产99久久久国产精品潘金网站| 国产精品第一页第二页第三页 | 亚洲电影一级片| 91精品在线麻豆| 精品一二三四区| 日本一区二区三区四区 | 亚洲一区二区三区在线| 欧美卡1卡2卡| 国产在线视频一区二区三区| 国产精品麻豆久久久| 91精彩视频在线观看| 五月天欧美精品| 亚洲精品在线一区二区| 成人动漫一区二区| 亚洲成人免费在线观看| 2020国产精品自拍| 波多野结衣亚洲| 亚洲国产成人高清精品| 2021中文字幕一区亚洲| 91丨九色porny丨蝌蚪| 性感美女极品91精品| 久久欧美一区二区| 一本色道a无线码一区v| 美国十次了思思久久精品导航| 久久久久青草大香线综合精品| jlzzjlzz亚洲女人18| 视频一区视频二区中文| 久久久国产精品午夜一区ai换脸| 91影院在线观看| 青青草原综合久久大伊人精品| 国产日韩精品一区二区三区| 日本韩国欧美国产| 久久99精品久久久久久国产越南 | 一本大道久久精品懂色aⅴ| 日韩成人一级片| 国产精品成人网| 日韩一二三区不卡| 99在线视频精品| 久久国产欧美日韩精品| 亚洲免费观看高清完整版在线 | 麻豆国产精品官网| 亚洲品质自拍视频网站| 欧美成人aa大片| 色哟哟日韩精品| 国产精品一色哟哟哟| 午夜精品福利一区二区三区av| 中文幕一区二区三区久久蜜桃| 欧美人伦禁忌dvd放荡欲情| av一区二区三区| 奇米影视一区二区三区| 亚洲精品欧美二区三区中文字幕| 2021中文字幕一区亚洲| 6080国产精品一区二区| 91视频免费看| 国产麻豆精品久久一二三| 偷拍与自拍一区| 亚洲嫩草精品久久| 久久久亚洲高清| 日韩丝袜美女视频| 欧美中文字幕久久| 91同城在线观看| 国产成人av福利| 精品一区二区三区不卡| 亚洲国产成人va在线观看天堂| 国产精品久久久久久久久快鸭| 精品国产一区二区亚洲人成毛片| 欧美视频精品在线| 91亚洲精品久久久蜜桃| 成人精品一区二区三区四区| 捆绑变态av一区二区三区| 亚洲国产精品一区二区www在线| 自拍偷在线精品自拍偷无码专区| 久久九九99视频| 欧美mv和日韩mv的网站| 制服丝袜激情欧洲亚洲| 欧美色图在线观看| 日本韩国欧美在线| 91一区一区三区| 99视频在线精品| eeuss国产一区二区三区| 国内精品伊人久久久久影院对白| 免费成人在线观看视频| 日本免费在线视频不卡一不卡二| 亚洲午夜免费福利视频| 一卡二卡欧美日韩| 一区二区三区中文在线| 一区二区三区在线视频观看| 亚洲视频一区二区免费在线观看| 欧美国产日韩一二三区| 中文字幕第一页久久| 国产精品色婷婷| 一区免费观看视频| √…a在线天堂一区| 中文字幕亚洲精品在线观看| 国产精品国产三级国产三级人妇 | 91丨九色丨蝌蚪富婆spa| 94-欧美-setu| 一本高清dvd不卡在线观看| 91麻豆swag| 欧美私模裸体表演在线观看| 欧美日韩精品免费观看视频| 欧美日韩免费观看一区三区| 欧美日韩国产精品自在自线| 91精品婷婷国产综合久久性色| 欧美一区二区私人影院日本| 日韩一区二区影院| 久久在线免费观看| 日本一区二区三区四区在线视频| 一区在线观看视频| 一区二区三区色| 午夜在线成人av| 九九视频精品免费| 成人性生交大片免费看中文网站|