// Check if the string can match the wildcard. It can be used for unicode strings as well!
// C: 2004-07-24 | M: 2004-07-24
function MaskMatch(const aPattern, aSource: string): Boolean;
var
StringPtr, PatternPtr: PChar;
StringRes, PatternRes: PChar;
begin
Result := False;
StringPtr := PChar(UpperCase(aSource));
PatternPtr := PChar(UpperCase(aPattern));
StringRes := nil;
PatternRes := nil;
repeat
repeat // ohne vorangegangenes "*"
case PatternPtr^ of
#0 : begin
Result := StringPtr^ = #0;
if Result or (StringRes = nil) or (PatternRes = nil) then Exit;
StringPtr := StringRes;
PatternPtr := PatternRes;
Break;
end;
'*': begin
Inc(PatternPtr);
PatternRes := PatternPtr;
Break;
end;
'?': begin
if StringPtr^ = #0 then Exit;
Inc(StringPtr);
Inc(PatternPtr);
end;
else begin
if StringPtr^ = #0 then Exit;
if StringPtr^ <> PatternPtr^ then
begin
if (StringRes = nil) or (PatternRes = nil) then Exit;
StringPtr := StringRes;
PatternPtr := PatternRes;
Break;
end else
begin
Inc(StringPtr);
Inc(PatternPtr);
end;
end;
end;
until False; repeat // mit vorangegangenem "*"
case PatternPtr^ of
#0 : begin
Result := True;
Exit;
end;
'*': begin
Inc(PatternPtr);
PatternRes := PatternPtr;
end;
'?': begin
if StringPtr^ = #0 then Exit;
Inc(StringPtr);
Inc(PatternPtr);
end;
else begin
repeat
if StringPtr^ = #0 then Exit;
if StringPtr^ = PatternPtr^ then Break;
Inc(StringPtr);
until False;
Inc(StringPtr);
StringRes := StringPtr;
Inc(PatternPtr);
Break;
end;
end;
until False;
until False;
end;其中StringRes,PatternRes是什么含义
StringPtr := StringRes;
PatternPtr := PatternRes;
为什么还要赋值??
请大虾赐教!!!
// C: 2004-07-24 | M: 2004-07-24
function MaskMatch(const aPattern, aSource: string): Boolean;
var
StringPtr, PatternPtr: PChar;
StringRes, PatternRes: PChar;
begin
Result := False;
StringPtr := PChar(UpperCase(aSource));
PatternPtr := PChar(UpperCase(aPattern));
StringRes := nil;
PatternRes := nil;
repeat
repeat // ohne vorangegangenes "*"
case PatternPtr^ of
#0 : begin
Result := StringPtr^ = #0;
if Result or (StringRes = nil) or (PatternRes = nil) then Exit;
StringPtr := StringRes;
PatternPtr := PatternRes;
Break;
end;
'*': begin
Inc(PatternPtr);
PatternRes := PatternPtr;
Break;
end;
'?': begin
if StringPtr^ = #0 then Exit;
Inc(StringPtr);
Inc(PatternPtr);
end;
else begin
if StringPtr^ = #0 then Exit;
if StringPtr^ <> PatternPtr^ then
begin
if (StringRes = nil) or (PatternRes = nil) then Exit;
StringPtr := StringRes;
PatternPtr := PatternRes;
Break;
end else
begin
Inc(StringPtr);
Inc(PatternPtr);
end;
end;
end;
until False; repeat // mit vorangegangenem "*"
case PatternPtr^ of
#0 : begin
Result := True;
Exit;
end;
'*': begin
Inc(PatternPtr);
PatternRes := PatternPtr;
end;
'?': begin
if StringPtr^ = #0 then Exit;
Inc(StringPtr);
Inc(PatternPtr);
end;
else begin
repeat
if StringPtr^ = #0 then Exit;
if StringPtr^ = PatternPtr^ then Break;
Inc(StringPtr);
until False;
Inc(StringPtr);
StringRes := StringPtr;
Inc(PatternPtr);
Break;
end;
end;
until False;
until False;
end;其中StringRes,PatternRes是什么含义
StringPtr := StringRes;
PatternPtr := PatternRes;
为什么还要赋值??
请大虾赐教!!!
解决方案 »
- 求一个sql语句,查询每天数据的最大值如何实现,谢谢大家
- 请问,我想实现按下一个TSpeedButton按钮时复制该按钮,移动鼠标时,复制的按钮随鼠标移动,放开鼠标左键后,复制的按钮停在放开的窗体位置,该
- 关于ie扩展的问题(在浏览网站的时候,QQ的工具可以在mouse停到图片上的时候显示出来并可以添加到qq表情里)
- 一个很奇怪的错误提示,请进来看看
- 高分:请教一个用SQL语句向SQL Server2000插入二进制(image)数据的问题!
- 解决文件群体重命名的方法是什么呀?
- 有谁好的帮助制作软件,提供网址也可以,高分求购!最好是正式版的!
- 如何用delphi自带的installshield express制作安装程序?
- 用DELPHI控制服务器上的SQL server2000进行数据备份和数据恢复
- delphi中怎么隐藏一个进程,使其不会被ctrl+alt+del调出任务列表然后‘结束任务’?
- 查询操作报BDE 13059错误,Select * from AppInfo where 1=2
- 年薪100万的题目
通配符 * 在该位置有零个或多个字符
? 在该位置有一个字符例如可以匹配aSource='123456'的有:*456
12*
12*56
*34*
??3456
12?456
??*等等