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

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

?? hutil32.pas

?? 傳奇客戶端
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
	StrPLCopy (Dest, Src, 255);
end;

function _StrPas (dest: PChar): string;
var
   i: integer;
begin
   Result := '';
   for i:=0 to length(dest)-1 do
      if dest[i] <> chr(0) then
         Result := Result + dest[i]
      else
         break;
end;

function Str_PCopy (dest: PChar; src: string): integer;
var
	len, i: integer;
begin
	len := Length (src);
	for i:=1 to len do dest[i-1] := src[i];
   dest[len] := #0;
   Result := len;
end;

function Str_PCopyEx (dest: PChar; const src: string; buflen: longint): integer;
var
	len, i: integer;
begin
	len := _MIN (Length (src), buflen);
	for i:=1 to len do dest[i-1] := src[i];
   dest[len] := #0;
   Result := len;
end;

function Str_Catch (src, dest: string; len: integer): string; //Result is rests..
begin

end;

function  Trim_R (const str: string): string;
var
	I, Len, tr: integer;
begin
	tr := 0;
	Len := Length (str);
   for I:=Len downto 1 do
   	if str[I] = ' ' then Inc (tr)
      else break;
   Result := Copy (str, 1, Len - tr);
end;

function IsEqualFont (SrcFont, TarFont: TFont): Boolean;
begin
	Result := TRUE;
	if SrcFont.Name <> TarFont.Name then Result := FALSE;
   if SrcFont.Color <> TarFont.Color then Result := FALSE;
   if SrcFont.Style <> TarFont.Style then Result := FALSE;
   if SrcFont.Size <> TarFont.Size then Result := FALSE;
end;


function CutHalfCode (Str: string): string;
var
	pos, Len: integer;
begin

	Result := '';
	pos := 1;
   Len := Length (Str);

	while TRUE do begin

   	if pos > Len then break;

      if (Str[pos] > #127) then begin

      	if ((pos+1) <= Len) and (Str[pos+1] > #127) then begin
      		Result := Result + Str[pos] + Str[pos+1];
         	Inc (pos);
         end;

      end else
      	Result := Result + Str[pos];

      Inc (pos);

   end;
end;


function ConvertToShortName(Canvas : TCanvas; Source : string; WantWidth : integer) : string;
var
   I, Len: integer;
   Str: string;
begin
	if Length(Source) > 3 then
      if Canvas.TextWidth (Source) > WantWidth then begin

 			Len := Length (Source);
         for I:=1 to Len do begin

            Str := Copy (Source, 1, (Len-I));
            Str := Str + '..';

            if Canvas.TextWidth (Str) < (WantWidth-4) then begin
               Result := CutHalfCode (Str);
               exit;
            end;

         end;

         Result := CutHalfCode (Copy (Source, 1, 2)) + '..';
         exit;

      end;

   Result := Source;

end;


function DuplicateBitmap (bitmap: TBitmap): HBitmap;
var
	hbmpOldSrc, hbmpOldDest, hbmpNew : HBitmap;
   hdcSrc, hdcDest						: HDC;

begin
   hdcSrc := CreateCompatibleDC (0);
   hdcDest := CreateCompatibleDC (hdcSrc);

   hbmpOldSrc := SelectObject(hdcSrc, bitmap.Handle);

   hbmpNew := CreateCompatibleBitmap(hdcSrc, bitmap.Width, bitmap.Height);

   hbmpOldDest := SelectObject(hdcDest, hbmpNew);

   BitBlt(hdcDest, 0, 0, bitmap.Width, bitmap.Height, hdcSrc, 0, 0,
     SRCCOPY);

   SelectObject(hdcDest, hbmpOldDest);
   SelectObject(hdcSrc, hbmpOldSrc);

   DeleteDC(hdcDest);
   DeleteDC(hdcSrc);

   Result := hbmpNew;
end;


procedure SpliteBitmap (DC: HDC; X, Y: integer; bitmap: TBitmap; transcolor: TColor);
var
   hdcMixBuffer, hdcBackMask, hdcForeMask, hdcCopy 			: HDC;
   hOld, hbmCopy, hbmMixBuffer, hbmBackMask, hbmForeMask 	: HBitmap;
   oldColor: TColor;
begin

   {UnrealizeObject (DC);}
(*   SelectPalette (DC, bitmap.Palette, FALSE);
   RealizePalette (DC);
  *)

	hbmCopy := DuplicateBitmap (bitmap);
	hdcCopy := CreateCompatibleDC (DC);
   hOld := SelectObject (hdcCopy, hbmCopy);

   hdcBackMask := CreateCompatibleDC (DC);
	hdcForeMask := CreateCompatibleDC (DC);
	hdcMixBuffer:= CreateCompatibleDC (DC);

	hbmBackMask := CreateBitmap (bitmap.Width, bitmap.Height, 1, 1, nil);
	hbmForeMask := CreateBitmap (bitmap.Width, bitmap.Height, 1, 1, nil);
	hbmMixBuffer:= CreateCompatibleBitmap (DC, bitmap.Width, bitmap.Height);

   SelectObject (hdcBackMask, hbmBackMask);
	SelectObject (hdcForeMask, hbmForeMask);
	SelectObject (hdcMixBuffer, hbmMixBuffer);

	oldColor := SetBkColor (hdcCopy, transcolor); //clWhite);

	BitBlt (hdcForeMask, 0, 0, bitmap.Width, bitmap.Height, hdcCopy, 0, 0, SRCCOPY);

	SetBkColor (hdcCopy, oldColor);

	BitBlt( hdcBackMask, 0, 0, bitmap.Width, bitmap.Height, hdcForeMask, 0, 0, NOTSRCCOPY );

	BitBlt( hdcMixBuffer, 0, 0, bitmap.Width, bitmap.Height, DC, X, Y, SRCCOPY );

	BitBlt( hdcMixBuffer, 0, 0, bitmap.Width, bitmap.Height, hdcForeMask, 0, 0, SRCAND );

	BitBlt( hdcCopy, 0, 0, bitmap.Width, bitmap.Height, hdcBackMask, 0, 0, SRCAND );

	BitBlt( hdcMixBuffer, 0, 0, bitmap.Width, bitmap.Height, hdcCopy, 0, 0, SRCPAINT );

	BitBlt( DC, X, Y, bitmap.Width, bitmap.Height, hdcMixBuffer, 0, 0, SRCCOPY );

   {DeleteObject (hbmCopy);}
   DeleteObject( SelectObject( hdcCopy, hOld ) );
	DeleteObject( SelectObject( hdcForeMask, hOld ) );
	DeleteObject( SelectObject( hdcBackMask, hOld ) );
	DeleteObject( SelectObject( hdcMixBuffer, hOld ) );

	DeleteDC( hdcCopy );
	DeleteDC( hdcForeMask );
	DeleteDC( hdcBackMask );
   DeleteDC( hdcMixBuffer );

end;

function TagCount(source: string; tag: char): integer;
var
   i, tcount: integer;
begin
   tcount := 0;
   for i:=1 to Length(source) do
      if source[i] = tag then Inc (tcount);
   Result := tcount;
end;

{ "xxxxxx" => xxxxxx }
function TakeOffTag (src: string; tag: char; var rstr: string): string;
var
   i, n2: integer;
begin
   n2 := Pos (tag, Copy (src, 2, Length(src)));
   rstr := Copy (src, 2, n2-1);
   Result := Copy (src, n2+2, length(src)-n2);
end;

function CatchString (source: string; cap: char; var catched: string): string;
var
   n: integer;
begin
   Result := '';
   catched := '';
   if source = '' then exit;
   if Length(source) < 2 then begin
      Result := source;
      exit;
   end;
   if source[1] = cap then begin
      if source[2] = cap then   //##abc#
         source := Copy (source, 2, Length(source));
      if TagCount (source, cap) >= 2 then begin
         Result := TakeOffTag (source, cap, catched);
      end else
         Result := source;
   end else begin
      if TagCount (source, cap) >= 2 then begin
         n := Pos (cap, source);
         source := Copy (source, n, Length(source));
         Result := TakeOffTag (source, cap, catched);
      end else
         Result := source;
   end;
end;

{ GetValidStr3客 崔府 僥喊磊啊 楷加欄肺 唱棵版快 貿府 救凳 }
{ 僥喊磊啊 絕闌 版快, nil 府畔.. }
function DivString (source: string; cap: char; var sel: string): string;
var
   n: integer;
begin
   if source = '' then begin
      sel := '';
      Result := '';
      exit;
   end;
   n := Pos (cap, source);
   if n > 0 then begin
      sel := Copy (source, 1, n-1);
      Result := Copy (source, n+1, Length(source));
   end else begin
      sel := source;
      Result := '';
   end;
end;

function DivTailString (source: string; cap: char; var sel: string): string;
var
   i, n: integer;
begin
   if source = '' then begin
      sel := '';
      Result := '';
      exit;
   end;
   n := 0;
   for i:=Length(source) downto 1 do
      if source[i] = cap then begin
         n := i;
         break;
      end;
   if n > 0 then begin
      sel := Copy (source, n+1, Length(source));
      Result := Copy (source, 1, n-1);
   end else begin
      sel := '';
      Result := source;
   end;
end;


function SPos (substr, str: string): integer;
var
   i, j, len, slen: integer;
   flag : Boolean;
begin
   Result := -1;
   len  := Length(str);
   slen := Length(substr);
   for i:=0 to len-slen do begin
      flag := TRUE;
      for j:=1 to slen do begin
         if byte(str[i + j]) >= $B0 then begin
            if (j < slen) and (i+j < len) then begin
               if substr[j] <> str[i + j] then begin
                  flag := FALSE;
                  break;
               end;
               if substr[j+1] <> str[i + j + 1] then begin
                  flag := FALSE;
                  break;
               end;
            end else
               flag := FALSE;
         end else
            if substr[j] <> str[i + j] then begin
               flag := FALSE;
               break;
            end;
      end;
      if flag then begin
         Result := i + 1;
         break;
      end;
   end;
end;

function NumCopy (str: string): integer;
var
   i: integer;
   data: string;
begin
   data := '';
   for i:=1 to Length(str) do begin
      if (Word('0') <= Word(str[i])) and (Word('9') >= Word(str[i])) then begin
         data := data + str[i];
      end else
         break;
   end;
   Result := Str_ToInt (data, 0);
end;

function  GetMonDay: string;
var
   year, mon, day: word;
   str: string;
begin
   DecodeDate (Date, year, mon, day);
   str := IntToStr(year);
   if mon < 10 then str := str + '0' + IntToStr(mon)
   else str := IntToStr(mon);
   if day < 10 then str := str + '0' + IntToStr(day)
   else str := IntToStr(day);
   Result := str;
end;

function  BoolToStr(boo: Boolean): string;
begin
   if boo then Result := 'TRUE'
   else Result := 'FALSE';
end;

function _MIN (n1, n2: integer): integer;
begin
	if n1 < n2 then Result := n1
   else Result := n2;
end;

function _MAX (n1, n2: integer): integer;
begin
	if n1 > n2 then Result := n1
   else Result := n2;
end;


procedure CenterDialog(hParentWnd, hWnd: HWnd);
var
  rcMainWnd, rcDlg: TRect;
begin
	GetWindowRect(hParentWnd, rcMainWnd);
	GetWindowRect(hWnd, rcDlg);
	
	MoveWindow(hWnd, rcMainWnd.left + (((rcMainWnd.right - rcMainWnd.left) - (rcDlg.right - rcDlg.left)) div 2),
				rcMainWnd.top + (((rcMainWnd.bottom - rcMainWnd.top) - (rcDlg.bottom - rcDlg.top)) div 2), 
				(rcDlg.right - rcDlg.left), (rcDlg.bottom - rcDlg.top), FALSE);
end;


function IsIPaddr(IP: string):boolean;
var
  Node:array [0..3] of integer;
  tIP:String;
  tNode:String;
  tPos:Integer;
  tLen:Integer;
begin
 Result:=False;
 tIP:=IP;
 tLen:=Length(tIP);
 tPos:=Pos('.',tIP);
 tNode:=MidStr(tIP,1,tPos -1);
 tIP:=MidStr(tIP,tPos +1 ,tLen - tPos);
 if not TryStrToInt(tNode,Node[0]) then exit;

 tLen:=Length(tIP);
 tPos:=Pos('.',tIP);
 tNode:=MidStr(tIP,1,tPos -1);
 tIP:=MidStr(tIP,tPos +1 ,tLen - tPos);
 if not TryStrToInt(tNode,Node[1]) then exit;

 tLen:=Length(tIP);
 tPos:=Pos('.',tIP);
 tNode:=MidStr(tIP,1,tPos -1);
 tIP:=MidStr(tIP,tPos +1 ,tLen - tPos);
 if not TryStrToInt(tNode,Node[2]) then exit;

 if not TryStrToInt(tIP,Node[3]) then exit;
 for tLen:=Low(Node) to High(Node) do begin
   if(Node[tLen] < 0) or (Node[tLen] > 255) then exit;
 end;
 Result:=True;
end;

function BoolToCStr(b:Boolean):String;
begin
  if b then result:='是' else result:='否';
end;

function BoolToIntStr(b:Boolean):string;
begin
  if b then result:='1' else result:='0';
end;


function CalcFileCRC(FileName:String):Integer;
var
  I: Integer;
  nFileHandle:Integer;
  nFileSize,nBuffSize:Integer;
  Buffer:PChar;
  Int:^Integer;
  nCrc:Integer;
begin
  Result:=0;
  if not FileExists(FileName) then begin
    exit;
  end;
  nFileHandle:=FileOpen(FileName,fmOpenRead or fmShareDenyNone);
  if nFileHandle = 0 then exit;
  nFileSize:=FileSeek(nFileHandle,0,2);
  nBuffSize:=(nFileSize div 4) * 4;
  GetMem(Buffer,nBuffSize);
  FillChar(Buffer^,nBuffSize,0);
  FileSeek(nFileHandle,0,0);
  FileRead(nFileHandle,Buffer^,nBuffSize);
  FileClose(nFileHandle);
  Int:=Pointer(Buffer);
  nCrc:=0;
    Exception.Create(IntToStr(SizeOf(Integer)));  
  for I := 0 to nBuffSize div 4 - 1 do begin
    nCrc:=nCrc xor Int^;
    Int:=Pointer(Integer(Int) + 4);
  end;
  FreeMem(Buffer);
  Result:=nCrc;
end;

function CalcBufferCRC(Buffer:PChar;nSize:Integer):Integer;
var
  I:Integer;
  Int:^Integer;
  nCrc:Integer;
begin
  Int:=Pointer(Buffer);
  nCrc:=0;
  for I := 0 to nSize div 4 - 1 do begin
    nCrc:=nCrc xor Int^;
    Int:=Pointer(Integer(Int) + 4);
  end;
  Result:=nCrc;
end;

function GetDayCount(MaxDate,MinDate:TDateTime):Integer;
var
  YearMax, MonthMax, DayMax: Word;
  YearMin, MonthMin, DayMin: Word;
begin
  Result:=0;
  if MaxDate < MinDate then exit;
  DecodeDate(MaxDate, YearMax, MonthMax, DayMax);
  DecodeDate(MinDate, YearMin, MonthMin, DayMin);
  Dec(YearMax,YearMin);
  YearMin:=0;
  Result:=(YearMax * 12 * 30 + MonthMax * 30 + DayMax) - (YearMin * 12 * 30 + MonthMin * 30 + DayMin);
end;

function GetCodeMsgSize(X: Double):Integer;
begin
  if INT(X) < X then Result:=TRUNC(X) + 1
  else Result:=TRUNC(X)
end;

function UpInt(i:double):integer;
begin
  result:=Ceil(i);
end;



end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产裸体歌舞团一区二区| 91丨九色丨蝌蚪富婆spa| 国产最新精品免费| 欧美在线观看一区二区| 亚洲国产成人一区二区三区| 视频在线观看一区二区三区| hitomi一区二区三区精品| 欧美一区二区三区在线| 亚洲精品美国一| 成人激情图片网| 精品久久国产老人久久综合| 一区二区三区高清不卡| 99国产精品99久久久久久| 2023国产精华国产精品| 免费在线看成人av| 欧美色精品天天在线观看视频| 中文字幕第一区| 韩国v欧美v日本v亚洲v| 精品欧美一区二区久久| 日韩电影免费在线看| 欧美性xxxxxx少妇| 亚洲国产色一区| 色94色欧美sute亚洲线路一久| 国产精品国模大尺度视频| 成人一区二区三区中文字幕| 久久久久久久久久久久电影| 久久国产精品一区二区| 欧美第一区第二区| 免费成人性网站| 精品久久久久久无| 精品一区二区三区免费播放| 日韩欧美一区二区在线视频| 午夜免费久久看| 欧美疯狂做受xxxx富婆| 秋霞国产午夜精品免费视频| 欧美一级视频精品观看| 另类小说视频一区二区| 亚洲精品在线电影| 国产精品自拍在线| 成人欧美一区二区三区黑人麻豆| 成人小视频免费观看| 1区2区3区精品视频| 欧美亚洲日本国产| 日本三级亚洲精品| 亚洲精品在线网站| www.日韩av| 亚洲一二三区视频在线观看| 欧美日韩一区二区三区四区 | 九九精品视频在线看| 久久综合色一综合色88| 国产成人精品亚洲日本在线桃色| 国产日产亚洲精品系列| 99热精品国产| 亚洲国产精品久久久久婷婷884| 制服丝袜亚洲精品中文字幕| 国产一区在线看| 亚洲视频中文字幕| 制服丝袜一区二区三区| 国产成a人亚洲| 一区二区三区蜜桃| 日韩欧美一二区| 97se亚洲国产综合在线| 日韩综合小视频| 欧美激情一区二区三区在线| 日本乱人伦aⅴ精品| 免费成人小视频| 亚洲美女免费在线| 日韩欧美第一区| 色偷偷88欧美精品久久久| 精品一区在线看| 一区二区三区中文字幕精品精品| 日韩一区二区三区在线视频| www.欧美.com| 久久国产三级精品| 一级中文字幕一区二区| 久久久亚洲国产美女国产盗摄| 91精品福利视频| 国产精品1区2区3区| 一区二区三区四区激情| 26uuu成人网一区二区三区| 欧美亚洲自拍偷拍| 99免费精品在线| 激情另类小说区图片区视频区| 亚洲一区二区在线观看视频 | 成年人午夜久久久| 免费久久精品视频| 亚洲影院在线观看| 国产精品久久久久三级| 精品国产乱码91久久久久久网站| 色视频一区二区| 国产成人精品一区二| 免费看欧美美女黄的网站| 亚洲一区二区四区蜜桃| 中文字幕av一区 二区| 精品久久99ma| 欧美久久一二区| 欧美三级日韩三级国产三级| 91网站最新地址| 91在线云播放| 99久久精品免费看国产| 国产成人午夜99999| 成人美女在线视频| 久久99精品久久久久| 日韩国产在线观看一区| 亚洲成av人**亚洲成av**| 日韩理论片在线| 亚洲人精品一区| 国产精品久久久久影院色老大| 久久久久国产一区二区三区四区| 欧美一级黄色录像| 欧美一区二区三区在线观看| 欧美放荡的少妇| 欧美日精品一区视频| 91久久精品网| 欧美体内she精高潮| 91极品视觉盛宴| 在线国产电影不卡| 欧美精品丝袜中出| 欧美一卡2卡三卡4卡5免费| 欧美一区二区三区啪啪| 欧美一级午夜免费电影| 精品日韩在线一区| 国产日韩在线不卡| 综合网在线视频| 亚洲欧美视频一区| 亚洲444eee在线观看| 男女视频一区二区| 国产美女久久久久| 97se狠狠狠综合亚洲狠狠| 欧美午夜不卡视频| 日韩午夜av一区| 久久人人爽人人爽| 国产精品第13页| 亚洲福中文字幕伊人影院| 青青草原综合久久大伊人精品优势| 日韩精品电影一区亚洲| 色婷婷精品大视频在线蜜桃视频| 91伊人久久大香线蕉| 欧美精品免费视频| 久久久国产午夜精品 | www国产精品av| 亚洲国产成人午夜在线一区| 亚洲精品国产a| 男女男精品网站| 99久久久久久| 这里只有精品免费| 国产精品女同一区二区三区| 亚洲综合免费观看高清在线观看| 日韩国产欧美在线播放| 国产98色在线|日韩| 欧美丝袜自拍制服另类| 亚洲精品一区二区三区精华液| 中文字幕精品三区| 亚洲一区二区三区中文字幕| 国产在线观看免费一区| 91丨porny丨首页| 欧美大胆人体bbbb| 一区二区三区国产精华| 国产美女视频一区| 欧美人动与zoxxxx乱| 欧美国产国产综合| 奇米精品一区二区三区四区 | 久久99日本精品| 色哟哟一区二区在线观看| 精品久久久久久无| 亚洲一区二区三区四区五区黄| 国产乱理伦片在线观看夜一区| 色婷婷久久久亚洲一区二区三区 | 韩国v欧美v亚洲v日本v| 欧洲在线/亚洲| 欧美国产丝袜视频| 美女www一区二区| 欧美综合一区二区三区| 欧美韩国日本综合| 国产精品自在在线| 精品日韩欧美在线| 日本午夜精品视频在线观看| 欧美性欧美巨大黑白大战| 日本一区二区动态图| 国产在线精品一区二区不卡了| 欧美系列亚洲系列| 亚洲一区在线观看免费观看电影高清 | 日本不卡一区二区三区| 成人爱爱电影网址| 国产网红主播福利一区二区| 免费久久99精品国产| 欧美一区二区三区爱爱| 亚洲成va人在线观看| 欧美视频精品在线| 亚洲一区二区三区中文字幕| 色av成人天堂桃色av| 一区二区三区不卡视频| 91丨porny丨在线| 亚洲色欲色欲www| 成人国产亚洲欧美成人综合网| 国产日韩欧美综合在线| 国产成人综合在线播放| 国产色一区二区| 顶级嫩模精品视频在线看| 国产欧美日韩精品在线|