易截截图软件、单文件、免安装、纯绿色、仅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 7 有两个版本的 SelectDirectory

以前用过delphi 2007的这个函数的,参数超多,现在的公司用D7,结果网上一查这个函数,用不成了,原来我用错了函数
unit QDialogs;
{$IFDEF LINUX}
function SelectDirectory(const Caption, Root: WideString;
  var Directory: WideString; ShowHidden: Boolean = False): Boolean;
{$ENDIF}
{$IFDEF MSWINDOW ......

在Delphi程序中操作注册表(转)

   32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息。     
    一、创建和释放TRegistry对象  
   
    1.创建TRegistry对象。为了操作注册表,要创建一个TRegistry对象:ARegistry   :=   TRegistry.Create;  
&n ......

Delphi动态事件深入分析

Delphi动态事件深入分析
2009-2-7
作者:不得闲
核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递...
首先做一个空窗体,放入一Button。
在implementation下面声明两个方法如下:
//外部方法,只声明一个参数,此时按照标准的对象内部事件方法T ......

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 ......

Delphi CRC32校验

网上Down的一个单元.自己改了下. unit utCRC32;
interface
uses
Windows,SysUtils,Classes;
const //Crc32表
Crc32Tab: Array[0..$FF] of LongInt =
($00000000, $77073096, $ee0e612c, $990951ba, $076dc419, $706af48f,
$e963a535, $9e6495a3, $0edb8832, $79dcb8a4, $e0d5e91e, $97d2d988,
$0 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号