在Delphi 2009或更高版本(Unicode)中,是否有任何内置函数或小程序在某处编写,可以进行合理有效的全字搜索,其中提供定义单词的分隔符,例如:
function ContainsWord(Word, Str: string): boolean;
const { Delim holds the delimiters that are on either side of the word }
Delim = ' .;,:(){}"/\<>!?[]'#$91#$92#$93#$94'-+*='#$A0#$84;
Run Code Online (Sandbox Code Playgroud)
哪里:
Word: string; { is the Unicode string to search for }
Str: string; { is the Unicode string to be searched }
Run Code Online (Sandbox Code Playgroud)
如果"Word"在字符串中,我只需要它返回true或false值.
在某个地方必定有这样的东西,因为标准的查找对话框具有"仅匹配整个单词"作为其中一个选项.
这通常(或最好)如何实施?
结论:
RRUZ的答案很完美.SearchBuf例程正是我所需要的.我甚至可以进入StrUtils例程,提取代码,并根据我的要求进行修改.
我很惊讶地发现SearchBuf不首先搜索该单词然后检查分隔符.相反,它一次查找字符串的字符,寻找分隔符.如果找到一个,则检查字符串和另一个分隔符.如果找不到,则查找另一个分隔符.为了效率,这非常聪明!
我正在使用Delphi中的TSynEdit编写Sql编辑器.我在荧光笔和自动填充的表名中有我的对象名称(表格,存储过程,域等),它们以蓝色和下划线显示这是我想要的但我想知道我是否可以将这些链接到一个事件我实际上可以打开那个对象.
有办法吗?
a)当鼠标悬停在这样的关键字上时,将光标更改为handPoint?
b)点击这样的关键字时执行事件,程序,功能?
谢谢你的建议.