我是不断的变pos('substr','str')中的'str'的范围如下: ===================================================== …… IF StartPos=0 THEN Begin iPos:=Pos(iFindText,Memo.Text); if iPos=0 then begin MessageBox(self.Handle ,Pchar('Not Found "'+iFindText+'"'),pchar('Null'),0); ReplaceDialog.CloseDialog ; end else begin Memo.SelStart :=iPos-1; Memo.SelLength :=iLength; StartPos:=Memo.SelStart+iLength ; Memo.SetFocus ; end; END ELSE Begin Memo.SelStart :=StartPos; Memo.SelLength:=Length(Memo.Text); WhereToFind:=Memo.SelText ; iPos:=Pos(iFindText,WhereToFind); if iPos=0 then begin MessageBox(self.Handle ,Pchar('Not Found "'+iFindText+'"'),pchar('Null'),0); Memo.SelStart :=0; ReplaceDialog.CloseDialog ; end else begin Memo.SelStart :=iPos+StartPos-1;//这里要理解,下一次的开始就是上一次的结束为开始。 Memo.SelLength :=iLength; StartPos:= Memo.SelStart+iLength; Memo.SetFocus ; end; END;……
=====================================================
……
IF StartPos=0 THEN
Begin
iPos:=Pos(iFindText,Memo.Text);
if iPos=0 then
begin
MessageBox(self.Handle ,Pchar('Not Found "'+iFindText+'"'),pchar('Null'),0);
ReplaceDialog.CloseDialog ;
end
else begin
Memo.SelStart :=iPos-1;
Memo.SelLength :=iLength;
StartPos:=Memo.SelStart+iLength ;
Memo.SetFocus ;
end;
END ELSE
Begin
Memo.SelStart :=StartPos;
Memo.SelLength:=Length(Memo.Text);
WhereToFind:=Memo.SelText ;
iPos:=Pos(iFindText,WhereToFind);
if iPos=0 then
begin
MessageBox(self.Handle ,Pchar('Not Found "'+iFindText+'"'),pchar('Null'),0);
Memo.SelStart :=0;
ReplaceDialog.CloseDialog ;
end else begin
Memo.SelStart :=iPos+StartPos-1;//这里要理解,下一次的开始就是上一次的结束为开始。
Memo.SelLength :=iLength;
StartPos:= Memo.SelStart+iLength;
Memo.SetFocus ;
end;
END;……