|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
|
下载文件 http://www.undu.com/LIBS/REGEXP.ZIPTuYLinux联盟 TuYLinux联盟 由于在 "Microsoft(r) Windows(r) Script" 中的实现因此可以在 Delphi 中使用规则表达式. 首先申明本文不是对规则表达式的理论分析而是解释如何在 Delphi 中使用它.TuYLinux联盟 TuYLinux联盟 首先我建议你从以下地址下载最终版本的 "Microsoft(r) Windows(r) Script" :TuYLinux联盟 TuYLinux联盟 http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp? url=/msdn-files/027/001/733/msdncompositedoc.xmlTuYLinux联盟 TuYLinux联盟 下载需要的包. TuYLinux联盟 下载完后运行它来安装.TuYLinux联盟 TuYLinux联盟 这将安装 Microsoft(r) Windows(r) Script 其中包含了: TuYLinux联盟 TuYLinux联盟 Visual Basic(r) Script Edition (VBScript.) Version 5.6, TuYLinux联盟 JScript(r) Version 5.6, Windows Script Components, TuYLinux联盟 Windows Script Host 5.6, TuYLinux联盟 Windows Script Runtime Version 5.6. TuYLinux联盟 TuYLinux联盟 我们只对规则表达式的实现感兴趣, 它是在文件 "vbscript.dll" 中. 每当你想在一个特定的机器上运行一个使用 "Microsoft(r) Windows(r) Script" 的规则表达式的程序时, 需要复制文件 "vbscript.dll" 到该机器上并用以下命令注册它:TuYLinux联盟 TuYLinux联盟 regsvr32 vbscript.dllTuYLinux联盟 TuYLinux联盟 注意你从 internet 上下载的自动安装包会自动进行注册.TuYLinux联盟 TuYLinux联盟 现在让我们导入类型库到 Delphi 中:TuYLinux联盟 TuYLinux联盟 从 delphi 系统菜单中, 选择 "Project" 然后选择 "Import type library": 这将会显示一个包含各种可导入类型库的列表框的对话框. TuYLinux联盟 从列表框中选择 "Microsoft VBScript Regular Expressions" (跟随一个类型库的版本号). 可能会有该名称的多个项在列表框中 (仅版本号不同): 在这种情况下选择最高版本号的版本.TuYLinux联盟 在 2002 年 9 月 23 日,该包可下载的版本是: TuYLinux联盟 TuYLinux联盟 "Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"TuYLinux联盟 TuYLinux联盟 而当前的版本是TuYLinux联盟 TuYLinux联盟 Microsoft(R) Windows(R) Script 5.6 TuYLinux联盟 TuYLinux联盟 该版本支持以下 "类名" TuYLinux联盟 TuYLinux联盟 TRegExpTuYLinux联盟 TMatchTuYLinux联盟 TMatchCollectionTuYLinux联盟 TSubMatchesTuYLinux联盟 TuYLinux联盟 在 "Unit dir name" 编辑框中打入类型库导入的 pascal 单元的单元名字. TuYLinux联盟 去掉 "Generate Component Wrapper" 复选框的复选(我们只对 pascal 源代码感兴趣) 并单击 "Create Unit" 按钮来创建导入单元. TuYLinux联盟 TuYLinux联盟 我们假定你使用的是最终版本.TuYLinux联盟 TuYLinux联盟 "Microsoft VBScript Regular Expressions 5.5 (Version 5.5)" TuYLinux联盟 TuYLinux联盟 将会定义以下 "接口":TuYLinux联盟 TuYLinux联盟 IRegExp = interface;TuYLinux联盟 IMatch = interface;TuYLinux联盟 IMatchCollection = interface;TuYLinux联盟 IRegExp2 = interface;TuYLinux联盟 IMatch2 = interface;TuYLinux联盟 IMatchCollection2 = interface;TuYLinux联盟 ISubMatches = interface;TuYLinux联盟 TuYLinux联盟 IRegExp 和 IRegExp2 是相同接口的不同的版本 (IRegExp2 是最终版本). 这对于其它接口也一样. TuYLinux联盟 TuYLinux联盟 然后是类型库中的 CoClasses 定义. 我们映射各 CoClass 到它的默认接口中:TuYLinux联盟 TuYLinux联盟 RegExp = IRegExp2;TuYLinux联盟 Match = IMatch2;TuYLinux联盟 MatchCollection = IMatchCollection2;TuYLinux联盟 SubMatches = ISubMatches;TuYLinux联盟 TuYLinux联盟 IRegExp2 是 "主要的" "接口":TuYLinux联盟 TuYLinux联盟 1) 属性:TuYLinux联盟 a) property Pattern: WideString read Get_PatternTuYLinux联盟 write Set_Pattern;TuYLinux联盟 //规则表达式TuYLinux联盟 TuYLinux联盟 b) property IgnoreCase: WordBool read Get_IgnoreCase TuYLinux联盟 write Set_IgnoreCase; TuYLinux联盟 //"大小写敏感" 搜索 (TRUE 或 FALSE)TuYLinux联盟 TuYLinux联盟 c) property Global: WordBool read Get_Global write Set_Global;TuYLinux联盟 //要对整个输入串进行全局搜索设置它为 TRUETuYLinux联盟 //如果你想在搜索到第一个匹配结果后就停止搜索设置它为 FALSETuYLinux联盟 TuYLinux联盟 d) property Multiline: WordBool read Get_Multiline TuYLinux联盟 write Set_Multiline; TuYLinux联盟 //如果输入串中包含 ‘n‘ 字符, 它包含一系列的行.TuYLinux联盟 //如果 Multiline = FALSE (默认值) 则规则表达式 TuYLinux联盟 //必须对各行进行明确地测试. TuYLinux联盟 //如果 Multiline = TRUE 规则表达式必须测试整个输入的串. TuYLinux联盟 TuYLinux联盟 2) 方法:TuYLinux联盟 TuYLinux联盟 a) function Execute(const sourceString: WideString): IDispatch; TuYLinux联盟 safecall; TuYLinux联盟 //对于各成功的匹配, 它返回一个包含 match 对象的 Matches 集合对象TuYLinux联盟 TuYLinux联盟 b) function Test(const sourceString: WideString): WordBool; TuYLinux联盟 safecall; TuYLinux联盟 //如果规则表达式可以成功地匹配则返回 TRUE TuYLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|
|
|
|
|