unit UntMemoFind;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
FindDialog1: TFindDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FindDialog1Find(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Finddialog1.Execute;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
I,J,PosReturn,SkipChars:Integer;//定义四个整型变量
begin
for I:=0 to Memo1.Lines.Count do //I用来在MEMO文本中循环查找
begin
PosReturn:=Pos(FindDialog1.FindText,Memo1.Lines[I]); //查找的文本
if PosReturn <>0 then //found!
begin
Skipchars:=0; // initialization Skipchars
for J:=0 to I-1 do //从这儿以下都不清楚
Skipchars:=Skipchars+Length(Memo1.Lines[J]);
SkipChars:=SkipChars+(I*2); //发现不要这行也可执行
SkipChars:=SkipChars+PosReturn-1; //从这儿以上都不清楚
Memo1.SetFocus;//设置光标
Memo1.SelStart:=SkipChars; //选择起始位置
Memo1.SelLength:=Length(FindDialog1.FindText);//选择长度
Break; //干什么用的?
end;
end;
end;
end.
//运行之后发现只能找到文本中第一次出现的要查找的内容,再不能往下找了