易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi下实现包含通配符的文本查找

本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-21351-1.htm,相关文件可以在上述地址的页面中下载。转载时请注明出处。
一、前言
通配符就是指“*”和“?”两个字符,“*”表示当前位置可以没有或者有多个任意字符;“?”表示当前位置有一个任意字符。通配符匹配在网上资料中都有讲到,但主要说的都是字符串匹配而不是文本查找。我结合通配符匹配的算法写了一个支持通配符的文本查找函数。这个函数的源代码可以在本楼末尾的压缩包中得到。现在先说一下通配符匹配的算法。
二、通配符匹配算法
利用包含通配符的模式串(以下简称模式串)进行文本查找,通常会匹配到一个不定长度的文本。所以匹配完成后不但要得到匹配文本的结束位置也要得到匹配文本的开始位置。现在先来看一个简单的问题:假设有长度为PLen的模式串P,以及长度为TLen的文本T。如果P中不包含通配符,那么用下面这个简单算法就可以完成查找:
function FindText1(P,T : PAnsiChar; PLen,TLen : Integer; var SelStart,SelEnd : Integer): Boolean;
var
    PCur,TCur : Integer;
begin
    result:=false;
    for TCur:=SelStart to TLen-PLen do
    begin
        for PCur:=0 to PLen-1 do
            if P[PCur]<>T[TCur+PCur] then break;
        if PCur>=PLen then
        begin
            SelStart:=TCur;
            SelEnd:=TCur+PLen;
            result:=true;
            break;
        end;
    end;
end;
以上函数从文本T的SelStart位置开始向下查找模式串P,返回是否找到,如果找到设置SelStart和SelEnd为匹配文本的开始位置和结束位置。这个算法是最简单的文本查找算法,它有两层循环,外层for循环用以确认查找位置并逐一后移,


相关文档:

delphi中关于字符串数组的一个小BUG

看如下代码:
var
   buffer:array [0..6] of char;
begin
    buffer:='delphi';
end;
编译通过
再看如下代码:
var
   buffer:array [1..7] of char;
begin
    buffer:='delphi';
end;
编译错误:
Incompatible types: 'Array' and 'String'
真不知道 ......

coolbar让你的delphi应用程序更酷

曹祖权
  工具条是程序员喜欢采用的组件,它具有简明直观的外形,能够方便用户执行最常用的功能。如果你使用delphi3编程,那么本人向你推荐coolbar组件。它是一种功能更为丰富的工具条,用它可以使多个传统的工具条、编辑框、组合列表框、图像甚至更多的组件集成到一个统一的coolbar中,使得应用程序窗口更为紧凑、界面 ......

常用的BCB & Delphi 函数

常用的BCB &amp; Delphi 函数
关键字:BCB,delphi,函数
作者:鲁小班    更新:2003-08-12    浏览:12686
翻译的不好,请见谅。
翻译:鲁小班
文件: ActnList
CreateAction 函数 创建一个指定类型的Action,显示在action list editor中。
EnumRegisteredAction 过程 枚举已经注册的 ......

delphi 使用ado 读写 vfp或者dbase4的数据库


tableDB.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ExtractFilePath(dir) +';Extended Properties=dBase 5.0;Persist Security Info=False;';
       tableDB.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(dir)+';Extended Pro ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号