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

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

?? hyperstr.pas

?? String hanlding library. Functions for crypto, token etc
?? PAS
?? 第 1 頁 / 共 5 頁
字號:


function  IsNumChar(const C:Char):Boolean;

  {Determine if a character is an ASCII digit(0-9).}

  asm
    Or    EAX,EAX
    Jz    @Done           //abort if nil address

    Cmp   AL,48
    Jb    @NG             //less than 0 is NG
    Cmp   AL,57
    Ja    @NG             //greater than 9 is NG
    Mov   EAX,True        //OK
    Jmp   @Done
@NG:
    Xor   EAX,EAX
@Done:
  end;                    //and we're outta here


function  IsAlphaChar(const C:Char):Boolean;

  {Determine if a character is in [A..Z,a..z].}

  asm
    Or    EAX,EAX
    Jz    @Done           //abort if nil address

    Push  EDI
    Lea   EDI,AlphaT
    And   EAX,255
    Mov   EDX,EAX
    And   EDX,7           //bit index
    Shr   EAX,3           //byte index
    Mov   AL,[EDI+EAX]    //get byte
    Bt    EAX,EDX         //test the bit
    Pop   EDI
    Jnc   @NG             //abort if NG
    Mov   EAX,True        //OK
    Jmp   @Done
@NG:
    Xor   EAX,EAX
@Done:
  end;                    //and we're outta here



function  IsAlphaNumChar(const C:Char):Boolean;

  {Determine if a character is in [0..9,A..Z,a..z].}

  asm
    Or    EAX,EAX
    Jz    @Done           //abort if nil address

    Push  EDI
    Lea   EDI,AlphaNumT
    And   EAX,255
    Mov   EDX,EAX
    And   EDX,7           //bit index
    Shr   EAX,3           //byte index
    Mov   AL,[EDI+EAX]    //get byte
    Bt    EAX,EDX         //test the bit
    Pop   EDI
    Jnc   @NG             //abort if NG
    Mov   EAX,True        //OK
    Jmp   @Done
@NG:
    Xor   EAX,EAX
@Done:
  end;                    //and we're outta here



function  IsHex(const Source:AnsiString):Boolean;

  {Determine if a string contains only digits (0-9,A-F) and spaces.}

  asm
    Lea   EDX,HexT      //initialize scan array
    Jmp   _IsTMask
  end;

function  IsAlpha(const Source:AnsiString):Boolean;

  {Determine if a string contains only ASCII alpha characters and spaces.}

  asm
    Lea   EDX,AlphaT      //initialize scan array
    Jmp   _IsTMask
  end;


function IsAlphaNum(const Source:AnsiString):Boolean;

  {Determine if a string contains only alphabetic characters,digits,space.}

  asm
    Lea   EDX,AlphaNumT      //initialize scan array
    Jmp   _IsTMask
  end;

function IsMask(const Source,Mask:AnsiString;Index:Integer):Boolean;

  {Validate Source from start to Index (-1 = Full) for conformance to a
   'picture mask' (similar to Delphi's EditMask) composed from the
   following special character set.

      A - Alphanumeric required (a..z,A..Z,0..9)
      a - Alphanumeric permitted
      C - Alphabetic character required (a..z,A..Z)
      c - Alphabetic character permitted
      0 - Numeric required (0..9)
      9 - Numeric permitted
      # - +/- permitted
      ? - Any character required (#0..#255)
      @ - Any character permitted
      | - Literal next, required
      \ - Literal next, permitted

  NOTE: Trailing spaces are allowed, leading spaces are not.
        Index provides support for partial, incremental validation. If
        Index<>-1, validation is only performed on the characters present.
        In other words, Source is allowed to be incomplete compared to Mask.
        To FULLY validate the entire Mask, you MUST use Index = -1.}
var
  I,J:Integer;
begin
  Result:=False;
  R1:=Length(Source);
  R2:=Length(Mask);
  if (R2=0) OR (R1=0) then Exit;
  if (Index>0) and (Index<R1) then R1:=Index;
  J:=1;                 //initialize Mask pointer
  I:=1;                 //initialize Source pointer
  bI:=False;
  bJ:=False;
  while I<=R1 do begin
    bX:=False;          //assume invalid character
    case Mask[J] of
      '#':if (Source[I]<>#45) AND (Source[I]<>#43) then
            bJ:=True
          else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      '0':if (Source[I]<#48) OR (Source[I]>#57) then
            break
          else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      '9':if (Source[I]<#48) OR (Source[I]>#57) then begin
            bJ:=True;
          end else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
       '?','@':begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      'A':if (Source[I]=#32) OR (IsAlphaNumChar(Source[I])=False) then
//(Source[I]<#48) OR (Source[I]>#122) OR ((Source[I]>#57) AND (Source[I]<#65)) OR ((Source[I]>#90) AND (Source[I]<#97)) then
            break
          else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      'C':if (Source[I]=#32) OR (IsAlphaChar(Source[I])=False) then
//(Source[I]<#65) OR (Source[I]>#122) OR ((Source[I]>#90) AND (Source[I]<#97)) then
            break
          else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      'a':if (Source[I]=#32) OR (IsAlphaNumChar(Source[I])=False) then
//(Source[I]<#48) OR (Source[I]>#122) OR ((Source[I]>#57) AND (Source[I]<#65)) OR ((Source[I]>#90) AND (Source[I]<#97)) then
            bJ:=True
          else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      'c':if (Source[I]=#32) OR (IsAlphaChar(Source[I])=False) then
//(Source[I]<#65) OR (Source[I]>#122) OR ((Source[I]>#90) AND (Source[I]<#97)) then
            bJ:=True
          else begin
            bX:=True;
            bI:=True;
            bJ:=True;
          end;
      '\':begin
            if J=R2 then break;
            J:=J+1;
            if Source[I]=Mask[J] then begin
              bX:=True;
              bI:=True;
              bJ:=True;
            end else bJ:=True;
          end;
      '|':begin
            if J=R2 then break;
            J:=J+1;
            if Source[I]<>Mask[J] then break;
            bX:=True;
            bI:=True;
            bJ:=True;
          end;

    else
      break;
    end;
    if bJ then begin         //increment Mask pointer
      if J=R2 then break;
      J:=J+1;
      bJ:=False;
    end;
    if bI then begin         //increment Source pointer
      if I=R1 then break;
      I:=I+1;
      bI:=False;
    end;
  end;
  if bX then begin     //last character matched
    if bJ then begin   //end of Mask
      Result:=True;
      if I<R1 then begin  //not end of Source
        for I:=I TO R1 do begin
          if Source[I]<>#32 then begin   //not a space
            Result:=False;               //invalid
            break;
          end;
        end;
      end;
    end else if Index<>-1 then           //partial validation
      Result:=True
    else                                 //full validation
      Result:=CountT(Mask,'AC0?|',J)=0;
  end;
end;


function  IsNull(const Source:AnsiString):Boolean;
  {Determine if a string contains only char. 0-32 and 255.}
  asm
    Push  ESI             //save the important stuff

    Or    EAX,EAX
    Jz    @Done           //abort if nil address
    Mov   ESI,EAX         //put address into write register
    Mov   ECX,[EAX-4]     //put length into count register
    Xor   EAX,EAX
    Jecxz @Done           //bail out if zero length
    Cld
@Start:
    Lodsb                 //get a byte
    Cmp   AL,32
    Jbe   @OK             //less than or equal to space is OK
    Cmp   AL,255
    Jnz   @NG             //255 is OK
@OK:
    Dec   ECX
    Jnz   @Start
    Mov   EAX,True        //if we make it here, we've got a good one
    Jmp   @Done
@NG:
    Xor   EAX,EAX
@Done:
    Pop   ESI             //restore the important stuff
  end;                    //and we're outta here


function IsFound(const Source,Search:AnsiString;Start:Integer):Boolean;
  {Returns True if Search is found within Source from Start location forward.
   Search may contain any number of different tokens by using '&' (ASCII 38)
   as a kind of logical AND operator. Supports case insensitive using negative Start.

   Example: IsFound(S,'who&what&when',I);}

var
  I,J:Integer;
  Token:AnsiString;
begin
  Result:=False;
  if Length(Source)=0 then Exit;
  I:=1;
  J:=Length(Search);
  repeat
    Token:=ParseWord(Search,'&',I);
    if Length(Token)>0 then
      if ScanF(Source,Token,Start)>0 then begin
        Result:=True;
        Break;
      end;
  until (I<1) OR (I>J);
end;


function UChar(const Source:Char):Char;
  {Upper case a single character; similar to the built-in UpperCase
   function but with a Char compatible resultant using user-defined table.}
begin
  Result := UprCase[Ord(Source)];
end;


function LChar(const Source:Char):Char;
  {Lower case a single character; similar to the built-in LowerCase
   function but with a Char compatible resultant using user-defined table.}
begin
  Result:=LowCase[Ord(Source)];
end;


function RChar(const Source:Char):Char;
  {Reverse the case (lower to upper or upper to lower) of a single character
   using user-defined table.}
begin
  Result:=RevCase[Ord(Source)];
end;


procedure _TstBit;
asm
  Push  EDX
  Push  EAX
  And   EAX,255
  Mov   EDX,EAX
  And   EDX,7           //bit index
  Shr   EAX,3           //byte index
  Mov   AL,[EBX+EAX]    //get byte
  Bt    EAX,EDX         //test the bit
  Pop   EAX
  Pop   EDX
end;


function IsMatch(const Source,Pattern:AnsiString; CaseFlg:Boolean):Boolean;

  {Returns True if Source contains a match for a pattern string containing
   wildcards:

     '*' = match any string (including null string)
     '?' = match any single character
     '#' = match any numeric character (0..9)
     '@' = match any alpha character (a..z, A..Z)
     '$' = match any alphanumeric character
     '~' = match any non-alpahumeric, non-space char.
    else = match given character only

   Case insensitive if CaseFlg = True.}

asm

  Push  ESI
  Push  EDI
  Push  EBX
  Push  EBP

  Or    EAX,EAX          //zero source ?
  Jz    @NotFound
  Or    EDX,EDX          //zero search ?
  Jz    @NotFound

  Mov   ESI,EAX          //source address
  Mov   EDI,EDX          //search address

  Xor   EAX,EAX          //clear for case flag
  Jecxz @L0              //skip if case sensitive

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品情趣视频| 久久影院电视剧免费观看| 亚洲精品乱码久久久久| 欧美日韩综合不卡| 国内精品免费**视频| 国产精品成人网| 欧美日韩精品欧美日韩精品| 国产精品一卡二卡在线观看| 伊人婷婷欧美激情| 精品国产伦一区二区三区免费| 成人av免费在线播放| 午夜精品久久久久| 国产精品午夜久久| 欧美一区二区美女| 99久久综合99久久综合网站| 日本怡春院一区二区| 国产日韩欧美综合一区| 欧美绝品在线观看成人午夜影视| 国产盗摄视频一区二区三区| 亚洲电影你懂得| 中文字幕亚洲区| 精品福利一二区| 欧美日韩国产123区| 国产乱码精品一品二品| 午夜电影一区二区| 亚洲精品视频在线看| 欧美精品一区二区三区在线 | 国产精品国产三级国产专播品爱网| 欧美在线免费播放| 99久久精品99国产精品| 狠狠色丁香久久婷婷综合_中| 亚洲在线中文字幕| 亚洲日本欧美天堂| 国产精品久久久久一区二区三区共| 欧美一级xxx| 在线观看免费视频综合| 99久久精品国产导航| 国产精品88av| 亚洲国产精品视频| 亚洲激情成人在线| 国产清纯白嫩初高生在线观看91 | 欧美日韩成人激情| 色悠悠亚洲一区二区| 国产精品一区二区在线看| 亚洲成a天堂v人片| 亚洲成人综合网站| 亚洲国产日产av| 亚洲一级片在线观看| 成人欧美一区二区三区小说| 中文字幕精品一区二区精品绿巨人| 欧美精品一区男女天堂| 精品乱人伦小说| 日韩视频在线一区二区| 日韩色在线观看| 日韩精品最新网址| 欧美不卡一区二区三区| 日韩精品中午字幕| 精品国内片67194| 精品国产凹凸成av人网站| 精品少妇一区二区三区在线视频| 欧美一区二区三区免费| 欧美成人激情免费网| 26uuu精品一区二区| 久久久久久久久99精品| 精品久久久久久无| 欧美国产禁国产网站cc| 国产精品久久久久天堂| 亚洲色图在线播放| 国产精品美女久久久久久久 | 日韩久久一区二区| 亚洲精品高清在线观看| 亚洲综合色区另类av| 亚洲电影视频在线| 琪琪久久久久日韩精品| 激情深爱一区二区| 国内不卡的二区三区中文字幕| 国产另类ts人妖一区二区| 国产xxx精品视频大全| 精品伊人久久久久7777人| 高清av一区二区| 99久久精品99国产精品| 欧美专区亚洲专区| 51精品秘密在线观看| 日韩精品专区在线影院重磅| 国产日本欧洲亚洲| 亚洲精品免费播放| 另类调教123区| 高清视频一区二区| 日本丶国产丶欧美色综合| 在线成人免费观看| 久久女同性恋中文字幕| 亚洲最新在线观看| 精品一区二区在线观看| heyzo一本久久综合| 91理论电影在线观看| 欧美日韩国产一二三| 久久久久国产一区二区三区四区| 中文字幕色av一区二区三区| 亚洲色图欧洲色图| 韩国欧美一区二区| 色婷婷综合五月| 日韩免费视频一区二区| 亚洲精品午夜久久久| 激情综合色丁香一区二区| 国产精品一区二区无线| 精品视频一区三区九区| 久久青草国产手机看片福利盒子| 亚洲综合男人的天堂| 国产一区二区三区四| 欧美日韩一卡二卡| 国产欧美综合色| 免费欧美日韩国产三级电影| 91婷婷韩国欧美一区二区| 久久久www成人免费无遮挡大片| 欧美aⅴ一区二区三区视频| 欧美视频三区在线播放| 亚洲人成亚洲人成在线观看图片 | 日韩欧美亚洲国产另类| 亚洲电影中文字幕在线观看| 色综合久久中文综合久久97| 国产精品全国免费观看高清| 国产麻豆91精品| 久久久蜜桃精品| 国产盗摄一区二区| 国产亚洲精品精华液| 国产在线不卡一卡二卡三卡四卡| 欧美电影免费观看高清完整版在线观看 | 国产精品亚洲а∨天堂免在线| 日韩视频免费直播| 免费不卡在线观看| 日韩一区二区免费在线观看| 日本aⅴ精品一区二区三区| 欧美福利视频导航| 日本亚洲一区二区| 日韩一区二区电影| 免费美女久久99| 精品国产乱码久久久久久浪潮| 另类小说一区二区三区| 欧美一区二区三区人| 美洲天堂一区二卡三卡四卡视频| 欧美一区二区三区视频在线| 麻豆精品新av中文字幕| 精品99一区二区| 国产成人亚洲综合a∨婷婷| 国产欧美日韩精品一区| av电影在线不卡| 亚洲综合久久久| 欧美一卡2卡三卡4卡5免费| 免费在线看一区| 久久久久久久久一| 不卡欧美aaaaa| 亚洲美女少妇撒尿| 555夜色666亚洲国产免| 蜜桃视频在线观看一区| 久久久久久久久久久久久久久99| 东方欧美亚洲色图在线| 亚洲美腿欧美偷拍| 91精品免费在线观看| 国产一本一道久久香蕉| 亚洲欧美色综合| 欧美一区二区三区视频免费播放| 国产老肥熟一区二区三区| 亚洲日本在线a| 欧美一区二区三区免费在线看| 国产福利91精品一区二区三区| 亚洲日韩欧美一区二区在线| 欧美欧美欧美欧美首页| 国产一区二区免费看| 综合精品久久久| 91精品国产色综合久久不卡电影| 国产又粗又猛又爽又黄91精品| 日韩美女视频一区二区 | 精品欧美一区二区在线观看| 不卡大黄网站免费看| 亚洲第一会所有码转帖| 久久精品亚洲麻豆av一区二区 | 久久综合九色综合欧美98| 91猫先生在线| 久久国产日韩欧美精品| 亚洲欧美另类久久久精品| 精品国产一区二区在线观看| 91一区二区三区在线观看| 久久精品国产亚洲5555| 亚洲欧美日韩国产中文在线| 精品国产1区二区| 欧美中文字幕久久| 东方aⅴ免费观看久久av| 亚洲va中文字幕| 中文字幕一区二区三区四区| 欧美一卡二卡三卡| 色呦呦一区二区三区| 国产福利91精品一区| 日韩主播视频在线| 亚洲欧美日本韩国| 久久久久久毛片| 日韩一区二区在线免费观看| 色又黄又爽网站www久久| 国产麻豆精品视频| 三级在线观看一区二区| 亚洲久草在线视频|