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

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

?? masksearch.pas

?? 動態提示控件
?? PAS
字號:
{
  Basic pattern matching.  Supports '*' and '?' only.

  This code is based on a unit by Markus Stephany (mirbir.st@t-online.de) that
  I found on DSP (http://sunsite.icm.edu.pl/delphi/).  Please DO NOT email
  Markus about any problems you may find in it.  All problems with it should be
  reported to me, since I'm the last one who mucked with it.

  The original did a bunch of stuff that I didn't need (like searching inside
  of files), didn't do some stuff that I did need (like handling spaces in the
  filename), and had a few bugs, too.  In order to help me find the bugs more
  quickly, I stripped out the stuff I didn't need, renamed things to be a little
  more clear, and generally tried to clean up the mess that comes from stripping
  out stuff you don't need.  :)
}
unit MaskSearch;

interface

uses
  Classes, SysUtils;


procedure BuildMask(Str: string; MaskList: TStringList);

function FileMatches(AFile: string; MaskList: TStringList): boolean;


implementation


// fills the grep_list with the parts of 's' (divided by ';')
procedure BuildMask(Str: string; MaskList: TStringList);
var
  ct: integer;
begin
  MaskList.clear;
  MaskList.sorted := false;
  if Str = '' then
  begin
    MaskList.add('*');
  end else begin
    if Str[length(Str)] <> ';' then
      Str := Str + ';';

    // divide the string
    ct := Pos(';', Str);
    while ct > 0 do
    begin
      MaskList.Add(AnsiLowerCase(Copy(Str, 1, ct-1)));
      Delete(Str, 1, ct);
      ct := Pos(';', Str);
    end;

    MaskList.sorted := TRUE;
    MaskList.duplicates := dupIgnore;
  end;
end;

// tests whether the string 'Str' fits to the search mask in 'Mask'
function SimpleGrep(Str, Mask: string):boolean;
var
  sr, s2: string;
  ps1,ps2,ps3: integer;
  DontCare: boolean;
  OneChar: char;
  TmpList: TStringList;
begin
  if (Mask = '*') or // fits always
     ((Mask = '*.*') and (Pos('.', Str) > 0)) then // always fits, too
    Result := TRUE
  else begin
    if (Pos('*', Mask) = 0) and (Pos('?', Mask) = 0) and (Mask = Str) then
      // searched text was found (searchstring IN text)
      Result := TRUE
    else begin
      Result := FALSE;
      if Mask = '' then
        exit;

      TmpList := TStringList.Create;
      try
        // divide partial strings ('?','*' or text) to TmpList
        repeat
          OneChar := Mask[1];
          if (OneChar in ['*', '?']) then
          begin
            TmpList.Add(OneChar);
            Delete(Mask, 1, 1);
          end else begin
            ps1 := Pos('?', Mask);
            if ps1 = 0 then
              ps1 := MaxInt;
            ps2 := Pos('*', Mask);
            if ps2 = 0 then
              ps2 := MaxInt;
            if ps2 > ps1 then
              ps2 := ps1;

            TmpList.Add(Copy(Mask, 1, ps2-1));
            Delete(Mask, 1, ps2-1);
          end;
        until Mask = '';

        // now compare the string with the partial search masks
        DontCare := FALSE;
        ps2 := 1;
        if TmpList.Count > 0 then
        begin
          for ps1 := 0 to pred(TmpList.Count) do
          begin
            sr := TmpList[ps1];
            if sr = '?' then
            begin
              inc(ps2);
              if ps2 > length(Str)+1 then
                exit;
            end else begin
              if sr = '*' then
                DontCare := TRUE
              else begin
                if DontCare then
                begin
                  if ps1 = pred(TmpList.Count) then
                  begin
                    s2 := Copy(Str, ps2, maxint);
                    ps2 := length(Str); // just something to make the thing fail
                    if Length(s2) >= Length(SR) then
                      if sr = Copy(s2, Length(s2)-Length(SR)+1, MaxInt) then
                        ps2 := length(Str) + 1;
                  end else begin
                    ps3:= Pos(sr, Copy(Str, ps2, maxint));
                    if ps3 = 0 then
                      exit;
                    ps2 := ps2 + ps3 + length(sr) - 1;
                  end;
                  DontCare := FALSE;
                end else begin
                  if Copy(Str, ps2, length(sr)) <> sr then
                    exit;
                  ps2 := ps2 + length(sr);
                end;
              end;
            end;
          end;
        end;

        if (not DontCare) and (ps2 <> length(Str)+1) then
          Result := FALSE
        else
          Result := TRUE;
      finally
        TmpList.free;
      end;
    end;
  end;
end;

// tests whether the filename fits the search masks in MaskList
function FileMatches(AFile: string; MaskList: TStringList): boolean;
var
  ct: integer;
begin
  AFile := AnsiLowerCase(AFile);
  if (MaskList = NIL) or (MaskList.Count = 0) then
    Result := TRUE // if no search AFileing, the always return TRUE
  else begin
    if Pos('.', AFile) = 0 then
      AFile := AFile + '.'; // '.' is implied for filenames

    Result := FALSE;
    // compare with the whole MaskList until one fits
    for ct := 0 to Pred(MaskList.Count) do
    begin
      if SimpleGrep(AFile, MaskList[ct]) then
      begin
        Result := TRUE;
        break;
      end;
    end;
  end;
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道久久a久久综合| 正在播放亚洲一区| 69av一区二区三区| 中文字幕成人网| 免费成人在线视频观看| 91精彩视频在线观看| 欧美精品一区二区三区一线天视频| 中文字幕亚洲视频| 国产精品456露脸| 91精品婷婷国产综合久久| 亚洲三级小视频| 国产成人免费av在线| 精品国产乱码久久| 日本欧美一区二区三区乱码| 色综合天天综合| 中文字幕欧美国产| 激情深爱一区二区| 日韩你懂的电影在线观看| 亚洲国产美女搞黄色| 一本大道av一区二区在线播放| 日本一区二区免费在线| 九九视频精品免费| 91精品国产综合久久久久| 亚洲国产综合色| 色狠狠综合天天综合综合| 亚洲三级电影网站| 91美女蜜桃在线| 亚洲人成7777| av中文字幕一区| 中文字幕二三区不卡| 国产成人精品www牛牛影视| 久久综合九色综合久久久精品综合| 亚洲国产精品久久人人爱蜜臀| 97精品视频在线观看自产线路二| 国产精品网站在线| 99久久国产综合精品女不卡| 国产精品成人在线观看| 成人91在线观看| 亚洲视频图片小说| 精品视频一区二区不卡| 午夜国产精品一区| 欧美电视剧在线观看完整版| 国产精品一区二区在线播放| 国产欧美日韩视频在线观看| 成人免费毛片app| 《视频一区视频二区| 99久久精品国产网站| 亚洲欧洲制服丝袜| 欧美乱妇23p| 免费成人小视频| 国产午夜精品一区二区| 99热这里都是精品| 五月天亚洲精品| 日韩欧美在线综合网| 国产乱人伦偷精品视频免下载| 国产精品久久久久7777按摩| 日本福利一区二区| 美女国产一区二区三区| 中文字幕乱码亚洲精品一区 | 三级一区在线视频先锋| 制服丝袜中文字幕一区| 国产呦萝稀缺另类资源| 中文字幕一区三区| 91精品国产综合久久精品性色| 国产一区二区三区在线观看免费 | 久久国产夜色精品鲁鲁99| 久久众筹精品私拍模特| 色av成人天堂桃色av| 美女在线视频一区| 亚洲视频香蕉人妖| 欧美精品一区二| 色94色欧美sute亚洲13| 极品少妇xxxx精品少妇偷拍| 亚洲天堂福利av| 欧美刺激午夜性久久久久久久| www.日韩在线| 日本va欧美va精品发布| 亚洲免费在线看| 亚洲精品一区二区三区蜜桃下载| 日本高清不卡在线观看| 夫妻av一区二区| 日本v片在线高清不卡在线观看| 国产精品每日更新在线播放网址| 精品视频免费看| 99re这里只有精品首页| 久久 天天综合| 亚洲大片一区二区三区| 最近中文字幕一区二区三区| 久久综合九色欧美综合狠狠| 欧美日韩国产美女| 91影院在线观看| 大桥未久av一区二区三区中文| 日韩精品成人一区二区三区| 亚洲视频一二区| 中文字幕av免费专区久久| 精品国产精品一区二区夜夜嗨| 欧美日韩亚洲综合在线| 91视频在线看| 成人精品鲁一区一区二区| 国产一区二区三区四区五区入口| 日韩福利电影在线| 亚洲综合免费观看高清完整版在线 | 一本到高清视频免费精品| 国产视频亚洲色图| 日韩免费视频一区二区| 欧美日韩一区中文字幕| 91成人在线观看喷潮| 91天堂素人约啪| 成人综合婷婷国产精品久久 | 一本色道亚洲精品aⅴ| 国产成人免费网站| 大桥未久av一区二区三区中文| 国产麻豆精品视频| 国产不卡视频在线观看| 国产成人自拍高清视频在线免费播放| 久久99精品一区二区三区三区| 日产国产欧美视频一区精品| 日韩国产欧美在线播放| 免费观看日韩电影| 久久国产精品色婷婷| 精品综合久久久久久8888| 国内精品久久久久影院色| 国产一区二区福利| 成人黄色综合网站| 99久久伊人精品| 欧美午夜精品久久久| 正在播放亚洲一区| 久久久久久综合| 国产精品国产三级国产有无不卡 | 国产拍欧美日韩视频二区| 欧美激情综合五月色丁香小说| 亚洲国产精品精华液2区45| 国产精品成人网| 一二三四社区欧美黄| 午夜欧美一区二区三区在线播放| 老鸭窝一区二区久久精品| 国产福利精品一区| 欧美在线免费观看视频| 日韩一二在线观看| 欧美激情综合五月色丁香| 一区二区三区国产| 麻豆一区二区在线| 成人丝袜18视频在线观看| 欧美亚洲日本国产| 精品国产露脸精彩对白 | 免播放器亚洲一区| 国产福利一区二区| 欧美综合视频在线观看| 精品1区2区在线观看| 亚洲色图一区二区三区| 麻豆精品视频在线观看视频| 成人免费视频视频在线观看免费| 欧美日韩1234| 中文字幕免费观看一区| 日韩精品乱码av一区二区| 成人国产免费视频| 欧美一区二区三区色| 国产亚洲一区二区在线观看| 亚洲高清免费在线| 播五月开心婷婷综合| 91精品国产综合久久久久久久| 国产精品毛片无遮挡高清| 亚洲不卡一区二区三区| 成人午夜激情影院| 日韩美一区二区三区| 一区二区三区在线免费播放| 国产在线乱码一区二区三区| 欧洲亚洲国产日韩| 中文字幕国产一区二区| 久久66热偷产精品| 69久久夜色精品国产69蝌蚪网| 国产精品丝袜久久久久久app| 美女爽到高潮91| 欧美色图12p| 中文字幕亚洲电影| 国产精品18久久久久久久网站| 777午夜精品免费视频| 亚洲色大成网站www久久九九| 国产成人精品在线看| 欧美精品一区二区三区蜜桃| 五月婷婷欧美视频| 欧美午夜影院一区| 亚洲激情综合网| av不卡免费电影| 国产三区在线成人av| 美女视频黄a大片欧美| 91精品国产日韩91久久久久久| 亚洲一区二区三区激情| 日本高清无吗v一区| 亚洲精品视频一区二区| a4yy欧美一区二区三区| 中文字幕亚洲在| 99国产精品久| 亚洲欧美怡红院| 99re热视频精品| 一色桃子久久精品亚洲| 成人av在线一区二区三区| 国产精品嫩草久久久久| jlzzjlzz亚洲女人18| 国产精品久久久久久久久搜平片|