这段代码就是在D2009下试验的。有一个解决的办法,不过认为还有更好的解决办法,请万老师指点。我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TPerlRegEx;
s, t: string; //如果在D2007中,应为widestring;
begin
try
reg := TPerlRegEx.Create(nil);
reg.Subject := UTF8Encode(Memo1.Lines.Text);
reg.RegEx := UTF8Encode(Edit1.Text);
Memo2.Lines.Clear;
while reg.MatchAgain do //MatchAgain 是下一个
begin
memo1.SetFocus;
//memo1.SelStart := reg.MatchedExpressionOffset;
//memo1.SelLength := reg.MatchedExpressionLength;
s := Copy(reg.Subject,1,reg.MatchedExpressionOffset-1);
t := reg.MatchedExpression;
memo1.SelStart := Length(s);
memo1.SelLength := Length(t);
//ShowMessage(reg.MatchedExpression); //将分别显示: 2 0 0 7 3 2
//Memo2.Lines.Add(inttostr(reg.MatchedExpressionOffset) + ' ' +inttostr(reg.MatchedExpressionLength));
//Memo2.Lines.Add(inttostr(Memo1.SelStart) + ' ' + inttostr(Memo1.SelLength));
//Memo2.Lines.Add(s);
Memo2.Lines.Add(reg.MatchedExpression);
//Inc(num);
end;
finally
FreeAndNil(reg);
end;
end;
另:
万老师使用过“Delphi高级正则引擎DIRegEx v4.3完整源码(d4/d11)”吗?网友们说不错。不过该控件虽然说有源码,但是关键的单元是以dcu形式提供的,安装后提示为为注册版本,请问万老师能不能找到关键单元的crack?
我的邮箱为:dggdsm@tom.com
谢谢
回复 引用