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

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

?? hutil32.pas

?? 傳奇客戶端源碼DClient很不錯哦直的研究的游戲源碼
?? PAS
?? 第 1 頁 / 共 4 頁
字號:

      Result := Copy (Source, SrcCount+1, SrcLen-SrcCount); {result is remain string}
	finally
   	//LeaveCriticalSection (CSUtilLock);
	end;
end;


function ArrestStringEx (Source, SearchAfter, ArrestBefore: string; var ArrestStr: string): string;
var
   BufCount, SrcCount, SrcLen: integer;
   GoodData, Fin: Boolean;
   i, n: integer;
begin
   ArrestStr := ''; {result string}
   if Source = '' then begin
      Result := '';
      exit;
   end;

   try
      SrcLen := Length (Source);
      GoodData := FALSE;
      if SrcLen >= 2 then
         if Source[1] = SearchAfter then begin
            Source := Copy (Source, 2, SrcLen-1);
            SrcLen := Length (Source);
            GoodData := TRUE;
         end else begin
            n := Pos (SearchAfter, Source);
            if n > 0 then begin
               Source := Copy (Source, n+1, SrcLen-(n));
               SrcLen := Length(Source);
               GoodData := TRUE;
            end;
         end;
      Fin := FALSE;
      if GoodData then begin
         n := Pos (ArrestBefore, Source);
         if n > 0 then begin
            ArrestStr := Copy (Source, 1, n-1);
            Result := Copy (Source, n+1, SrcLen-n);
         end else begin
            Result := SearchAfter + Source;
         end;
      end else begin
         for i:=1 to SrcLen do begin
            if Source[i] = SearchAfter then begin
               Result := Copy (Source, i, SrcLen-i+1);
               break;
            end;
         end;
      end;
   except
      ArrestStr := '';
      Result := '';
   end;
end;

function SkipStr (Src: string; const Skips: array of char): string;
var
	I, Len, C: integer;
   NowSkip: Boolean;
begin
	Len := Length (Src);
//   Count := sizeof(Skips) div sizeof (Char);

   for I:=1 to Len do begin
   	NowSkip := FALSE;
     	for C:=Low(Skips) to High(Skips) do
      	if Src[I] = Skips[C] then begin
         	NowSkip := TRUE;
            break;
         end;
      if not NowSkip then break;
   end;

   Result := Copy (Src, I, Len-I+1);

end;


function GetStrToCoords (Str: string): TRect;
var
	Temp: string;
begin

   Str := GetValidStr3 (Str, Temp, [',', ' ']); Result.Left   := Str_ToInt (Temp, 0);
   Str := GetValidStr3 (Str, Temp, [',', ' ']); Result.Top    := Str_ToInt (Temp, 0);
   Str := GetValidStr3 (Str, Temp, [',', ' ']); Result.Right  := Str_ToInt (Temp, 0);
          GetValidStr3 (Str, Temp, [',', ' ']); Result.Bottom := Str_ToInt (Temp, 0);

end;

function CombineDirFile (SrcDir, TargName: string): string;
begin
	if (SrcDir = '') or (TargName = '') then begin
   	Result := SrcDir + TargName;
      exit;
   end;
   if SrcDir [Length(SrcDir)] = '\' then
   	Result := SrcDir + TargName
   else Result := SrcDir + '\' + TargName;
end;

function  CompareLStr (src, targ: string; compn: integer): Boolean;
var
   i: integer;
begin
   Result := FALSE;
   if compn <= 0 then exit;
   if Length(src) < compn then exit;
   if Length(targ) < compn then exit;
   Result := TRUE;
   for i:=1 to compn do
      if UpCase(src[i]) <> UpCase(targ[i]) then begin
         Result := FALSE;
         break;
      end;
end;

function  CompareBuffer (p1, p2: PByte; len: integer): Boolean;
var
   i: integer;
begin
   Result := TRUE;
   for i:=0 to len-1 do
      if PByte(integer(p1)+i)^ <> PByte(integer(p2)+i)^ then begin
         Result := FALSE;
         break;
      end;
end;

function  CompareBackLStr (src, targ: string; compn: integer): Boolean;
var
   i, slen, tlen: integer;
begin
   Result := FALSE;
   if compn <= 0 then exit;
   if Length(src) < compn then exit;
   if Length(targ) < compn then exit;
   slen := Length(src);
   tlen := Length(targ);
   Result := TRUE;
   for i:=0 to compn-1 do
      if UpCase(src[slen-i]) <> UpCase(targ[tlen-i]) then begin
         Result := FALSE;
         break;
      end;
end;


function IsEnglish (Ch: Char): Boolean;
begin
	Result := FALSE;
	if ((Ch >= 'A') and (Ch <= 'Z')) or ((Ch >= 'a') and (Ch <= 'z')) then
   	Result := TRUE;
end;

function IsEngNumeric (Ch: Char): Boolean;
begin
	Result := FALSE;
	if IsEnglish (Ch) or ((Ch >= '0') and (Ch <= '9')) then
    	Result := TRUE;
end;

function IsEnglishStr (sEngStr:String): Boolean;
var
  i:Integer;
begin
	Result := FALSE;

  for i:= 1 to length(sEngStr) do begin
    Result := IsEnglish(sEngStr[i]);
    if Result then break;
  end;
end;

function  IsFloatNumeric (str: string): Boolean;
begin
   if Trim(str) = '' then begin
   	Result := FALSE;
      exit;
   end;
   try
      StrToFloat (str);
      Result := TRUE;
   except
      Result := FALSE;
   end;
end;

procedure PCharSet (P: PChar; n: integer; ch: char);
var
	I: integer;
begin
	for I:=0 to n-1 do
   	(P + I)^ := ch;
end;

function ReplaceChar (src: string; srcchr, repchr: char): string;
var
	i, len: integer;
begin
	if src <> '' then begin
      len := Length (src);
      for i:=0 to len-1 do
      	if src[i] = srcchr then src[i] := repchr;
   end;
   Result := src;
end;


function IsUniformStr (src: string; ch: char): Boolean;
var
	i, len: integer;
begin
   Result := TRUE;
	if src <> '' then begin
      len := Length (src);
      for i:=0 to len-1 do
      	if src[i] = ch then begin
         	Result := FALSE;
            break;
         end;
   end;
end;


function CreateMask (Src: PChar; TargPos: Integer): string;
	function IsNumber (chr: Char): Boolean;
   begin
    	if (Chr >= '0') AND (Chr <= '9') then
      	Result := TRUE
      else Result := FALSE;
   end;
var
	intFlag, Loop: Boolean;
   Cnt, IntCnt, SrcLen: Integer;
   Ch, Ch2: Char;
begin
   intFlag 	:= FALSE;
   Loop 		:= TRUE;
   Cnt := 0;
   IntCnt := 0;
   SrcLen := StrLen (Src);

   while Loop do begin
      Ch := PChar(Longint(Src) + Cnt)^;
      Case Ch of
         #0: begin
            Result := '';
         	break;
         end;
         ' ': begin
         end;
         else begin

            if not intFlag then begin { Now Reading char }
               if IsNumber (Ch) then begin
                  intFlag := TRUE;
                  Inc (IntCnt);
               end;
            end else begin { If, now reading integer }
               if not IsNumber (Ch) then begin  { XXE+3 }
                  case UpCase(Ch) of
                     'E':
                        begin
                           if (Cnt >= 1) AND (Cnt+2 < SrcLen) then begin
                              Ch := PChar(Longint(Src) + Cnt - 1)^;
                              if IsNumber (Ch) then begin
                                 Ch  := PChar(Longint(Src) + Cnt + 1)^;
                                 Ch2 := PChar(Longint(Src) + Cnt + 2)^;
                                 if not ((Ch = '+') AND (IsNumber (Ch2))) then begin
                                    intFlag := FALSE;
                                 end;
                              end;
                           end;
                        end;
                     '+':
                        begin
                           if (Cnt >= 1) AND (Cnt+1 < SrcLen) then begin
                              Ch  := PChar(Longint(Src) + Cnt - 1)^;
                              Ch2 := PChar(Longint(Src) + Cnt + 1)^;
                              if not ((UpCase(Ch) = 'E') AND (IsNumber (Ch2))) then begin
                                 intFlag := FALSE;
                              end;
                           end;
                        end;
                     '.':
                        begin
                           if (Cnt >= 1) AND (Cnt+1 < SrcLen) then begin
                              Ch  := PChar(Longint(Src) + Cnt - 1)^;
                              Ch2 := PChar(Longint(Src) + Cnt + 1)^;
                              if not ((IsNumber(Ch)) AND (IsNumber (Ch2))) then begin
                                 intFlag := FALSE;
                              end;
                           end;
                        end;

                     else
                        intFlag := FALSE;
                  end;
               end;
         end; {end of case else}
      end; {end of Case}
      end;
    	if (IntFlag) and (Cnt >= TargPos) then begin
        	Result := '%' + Format ('%d', [IntCnt]);
         exit;
      end;
      Inc (Cnt);
   end;
end;

function GetValueFromMask (Src: PChar; Mask: string): string;
	function Positon (str: string): Integer;
   var
   	str2: string;
	begin
   	str2 := Copy (str, 2, Length(str)-1);
		Result := StrToIntDef (str2, 0);
		if Result <= 0 then Result := 1;
	end;
	function IsNumber (ch: char): Boolean;
	begin
		case ch of
			'0'..'9': Result := TRUE;
			else Result := FALSE;
		end;
	end;
var
	IntFlag, Loop, Sign: Boolean;
	Buf: Str256;
	BufCount, Pos, LocCount, TargLoc, SrcLen: Integer;
	Ch, Ch2: Char;
begin
	SrcLen := StrLen (Src);
	LocCount := 0;
   BufCount := 0;
	Pos := 0;
	IntFlag := FALSE;
	Loop := TRUE;
	Sign := FALSE;

   if Mask = '' then Mask := '%1';
	TargLoc := Positon (Mask);

	while Loop do begin
		if Pos >= SrcLen then break;
		Ch := PChar (Src + Pos)^;
		if not IntFlag then begin {now reading chars}
			if LocCount < TargLoc then begin
				if IsNumber (Ch) then begin
					IntFlag := TRUE;
					BufCount := 0;
					Inc (LocCount);
				end else begin
					if not Sign then begin {default '+'}
						if Ch = '-' then Sign := TRUE;
					end else begin
						if Ch <> ' ' then Sign := FALSE;
					end;
				end;
			end else begin
				break;
			end;
		end;
		if IntFlag then begin {now reading numbers}
			Buf[BufCount] := Ch;
			Inc (BufCount);
			if not IsNumber (Ch) then begin
				case Ch of
					'E','e':
						begin
							if (Pos >= 1) AND (Pos+2 < SrcLen) then begin
								Ch := PChar(Src + Pos - 1)^;
								if IsNumber (Ch) then begin
									Ch  := PChar(Src + Pos + 1)^;
									Ch2 := PChar(Src + Pos + 2)^;
									if not ((Ch = '+') or (Ch = '-') AND (IsNumber (Ch2))) then begin
										Dec (BufCount);
										IntFlag := FALSE;
									end;
								end;
							end;
						end;
					'+','-':
						begin
							if (Pos >= 1) AND (Pos+1 < SrcLen) then begin
								Ch  := PChar(Src + Pos - 1)^;
								Ch2 := PChar(Src + Pos + 1)^;
								if not ((UpCase(Ch) = 'E') AND (IsNumber (Ch2))) then begin
									Dec (BufCount);
									IntFlag := FALSE;
								end;
							end;
						end;
					'.':
						begin
							if (Pos >= 1) AND (Pos+1 < SrcLen) then begin
								Ch  := PChar(Src + Pos - 1)^;
								Ch2 := PChar(Src + Pos + 1)^;
								if not ((IsNumber(Ch)) AND (IsNumber (Ch2))) then begin
									Dec (BufCount);
									IntFlag := FALSE;
								end;
							end;
						end;
					else
						begin
							IntFlag := FALSE;
							Dec (BufCount);
						end;
				end;
			end;
		end;
		Inc (Pos);
	end;
	if LocCount = TargLoc then begin
		Buf[BufCount] := #0;
		if Sign then
			Result := '-' + StrPas (Buf)
		else Result := StrPas (Buf);
	end else Result := '';
end;

procedure GetDirList (path: string; fllist: TStringList);
var
	SearchRec: TSearchRec;
begin
	if FindFirst (path, faAnyFile, SearchRec) = 0 then begin
      fllist.AddObject (SearchRec.Name, TObject(SearchRec.Time));
    	while TRUE do begin
      	if FindNext (SearchRec) = 0 then begin
            fllist.AddObject (SearchRec.Name, TObject(SearchRec.Time));
         end else begin
            SysUtils.FindClose (SearchRec);
            break;
         end;
		end;
   end;
end;

function  GetFileDate (filename: string): integer; //DOS format file date..
var
	SearchRec: TSearchRec;
begin
  Result:=0;//jacky
	if FindFirst (filename, faAnyFile, SearchRec) = 0 then begin
   	Result := SearchRec.Time;
      SysUtils.FindClose (SearchRec); 
   end;
end;




procedure ShlStr (Source: PChar; count: integer);
var
	I, Len: integer;
begin
	Len := StrLen (Source);
	while (count > 0) do begin
		for I:=0 to Len-2 do
      	Source[I] := Source[I+1];
      Source [Len-1] := #0;

   	Dec (count);
   end;
end;

procedure ShrStr (Source: PChar; count: integer);
var
	I, Len: integer;
begin
	Len := StrLen (Source);
	while (count > 0) do begin
		for I:=Len-1 downto 0 do
      	Source[I+1] := Source[I];
      Source [Len+1] := #0;

   	Dec (count);
   end;
end;

function  LRect (l, t, r, b: Longint): TLRect;
begin
	Result.Left := l;
   Result.Top  := t;
   Result.Right := r;
   Result.Bottom := b;
end;

procedure MemPCopy (Dest: PChar; Src: string);
var i: integer;
begin
	for i:=0 to Length(Src)-1 do Dest[i] := Src[i+1];
end;

procedure MemCpy (Dest, Src: PChar; Count: Longint);
var
	I: Longint;
begin
	for I := 0 to Count-1 do begin
   	PChar(Longint(Dest)+I)^ := PChar(Longint(Src)+I)^;
   end;
end;

procedure memcpy2 (TargAddr, SrcAddr: Longint; count: integer);
var
	I: Integer;
begin
	for I:=0 to Count-1 do
   	PChar(TargAddr + I)^ := PChar(SrcAddr + I)^;
end;

procedure memset (buffer: PChar; fillchar: char; count: integer);
var i: integer;
begin
	for i:=0 to count-1 do
   	buffer[i] := fillchar;
end;

procedure Str256PCopy (Dest: PChar; const Src: string);
begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃视频免费观看一区| 久久久久国产精品麻豆ai换脸| 中文字幕精品在线不卡| 国产乱国产乱300精品| 久久欧美一区二区| 国产成人在线观看免费网站| 日本一区二区三区视频视频| 中文字幕一区二区三区四区不卡 | 国产一区二区三区四| 日韩一级免费一区| 精品一区二区免费| 国产精品丝袜在线| 99视频热这里只有精品免费| 亚洲一区在线观看网站| 欧美一二三区在线观看| 国产一区二区三区久久悠悠色av| 久久久久9999亚洲精品| 99久久精品国产导航| 亚洲午夜精品17c| 欧美大度的电影原声| 国产999精品久久| 亚洲国产日产av| 91极品视觉盛宴| 亚洲精品国产精品乱码不99| 欧美日韩久久一区二区| 国内成人自拍视频| 亚洲欧美激情一区二区| 51精品秘密在线观看| 国产麻豆一精品一av一免费| 亚洲精品综合在线| 日韩一区二区三| av成人免费在线观看| 性欧美疯狂xxxxbbbb| 国产视频视频一区| 欧美日韩精品电影| 国产成人av一区二区三区在线观看| 一区二区三区美女视频| 精品久久久久久亚洲综合网| 成人av电影在线观看| 日本不卡高清视频| 中文字幕一区av| 日韩欧美第一区| 色8久久精品久久久久久蜜| 久久99国产乱子伦精品免费| 一区二区三区在线不卡| 欧美激情综合在线| 日韩欧美一二三区| 欧美日韩精品一区二区三区蜜桃| 岛国一区二区在线观看| 美国欧美日韩国产在线播放| 樱桃视频在线观看一区| 久久综合给合久久狠狠狠97色69| 欧美日韩精品一区二区天天拍小说| 成人一级片在线观看| 久久国产精品99久久人人澡| 亚洲一区在线观看视频| ...av二区三区久久精品| 久久色成人在线| 日韩视频免费观看高清完整版在线观看| 97超碰欧美中文字幕| 国产成人在线网站| 国产自产视频一区二区三区| 视频在线观看一区| 午夜影院久久久| 亚洲一级二级三级| 亚洲欧美日韩在线不卡| 国产精品国产三级国产普通话蜜臀 | 在线观看国产日韩| 99久久er热在这里只有精品66| 国产一区在线看| 久久精品国产亚洲aⅴ| 婷婷中文字幕综合| 婷婷成人综合网| 日韩一区精品字幕| 天堂在线亚洲视频| 性做久久久久久久免费看| 亚洲综合色丁香婷婷六月图片| 亚洲欧美日韩一区二区| 一区在线中文字幕| 亚洲美女视频一区| 亚洲综合无码一区二区| 一个色妞综合视频在线观看| 亚洲综合色自拍一区| 亚洲午夜久久久久久久久电影网| 亚洲综合色成人| 亚洲成a人v欧美综合天堂下载| 亚洲午夜一二三区视频| 天堂午夜影视日韩欧美一区二区| 亚洲www啪成人一区二区麻豆| 午夜影院在线观看欧美| 蜜臀国产一区二区三区在线播放| 久久激情五月激情| 国产成人一级电影| 91视频免费看| 欧美性xxxxx极品少妇| 6080yy午夜一二三区久久| 欧美zozo另类异族| 国产精品麻豆久久久| 玉米视频成人免费看| 水蜜桃久久夜色精品一区的特点| 免费av网站大全久久| 国产成人午夜精品5599| 99亚偷拍自图区亚洲| 欧美性高清videossexo| 欧美不卡一区二区三区四区| 久久精品一区二区三区av| 亚洲欧美日韩人成在线播放| 午夜精品在线视频一区| 国产一区二区不卡在线| 99久久精品一区| 7799精品视频| 国产精品丝袜91| 亚洲一级二级在线| 激情欧美一区二区三区在线观看| 成人午夜免费视频| 欧美三级在线看| 久久久噜噜噜久久人人看 | 伊人一区二区三区| 免费在线观看一区| 成人av网站在线| 欧美高清dvd| 日本一二三不卡| 日韩国产精品久久久久久亚洲| 国产成人啪午夜精品网站男同| 色播五月激情综合网| 日韩精品一区二区三区在线播放| 国产精品乱码久久久久久 | 蜜桃一区二区三区在线观看| 粉嫩一区二区三区性色av| 欧美人狂配大交3d怪物一区 | 欧美剧情片在线观看| 久久亚洲精品国产精品紫薇| 亚洲综合一区二区| 成人在线视频一区| 日韩一级大片在线观看| 亚洲色图一区二区三区| 国内久久精品视频| 欧美日本在线播放| 亚洲丝袜制服诱惑| 国产成a人亚洲精品| 一区二区三区在线免费| 国产精一区二区三区| 欧美福利视频一区| 亚洲精品第一国产综合野| 国产毛片一区二区| 4438亚洲最大| 亚洲综合偷拍欧美一区色| 成人小视频免费观看| 日韩欧美激情在线| 午夜日韩在线电影| 在线一区二区视频| 免费久久精品视频| 欧美亚洲一区三区| 亚洲欧美视频在线观看| 国产1区2区3区精品美女| 欧美大片日本大片免费观看| 亚洲国产精品一区二区久久恐怖片 | 精品久久五月天| 日韩精品成人一区二区在线| 在线精品亚洲一区二区不卡| 中文字幕五月欧美| 不卡大黄网站免费看| 欧美国产一区二区| 国产成人自拍网| 欧美激情一二三区| 欧美色涩在线第一页| 亚洲男人的天堂在线aⅴ视频| 成人福利视频网站| 国产精品九色蝌蚪自拍| 成人av网站在线| 亚洲视频在线一区观看| 91视频国产资源| 夜夜精品视频一区二区| 在线观看亚洲专区| 亚洲欧美日韩中文字幕一区二区三区| 成人伦理片在线| 亚洲同性gay激情无套| 日韩精品专区在线影院观看| 国产精品久久久久久妇女6080| 亚洲免费伊人电影| 91蜜桃婷婷狠狠久久综合9色| 中文字幕一区二| 中文字幕欧美激情| 国产中文字幕精品| 国产日韩欧美精品电影三级在线| 国产一区二区三区日韩 | 免费观看一级特黄欧美大片| 91精品黄色片免费大全| 麻豆国产精品视频| 国产亚洲精品中文字幕| 成人aa视频在线观看| 怡红院av一区二区三区| 91.xcao| 国产美女视频91| 亚洲女性喷水在线观看一区| 色婷婷亚洲一区二区三区| 亚洲成人1区2区| 久久久一区二区三区捆绑**| 大桥未久av一区二区三区中文| ...xxx性欧美|