| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- procedure TForm1.Find1Click(Sender: TObject);
 
 - begin
 
 -   FindDialog1.FindText:= Memo1.SelText;   //   执行查抄
 
 -   FindDialog1.Execute;
 
 - end;
 
  
- procedure TForm1.FindDialog1Find(Sender: TObject);
 
 - var
 
 -   i, j, PosReturn, SkipChars: Integer;
 
 - begin
 
 -   For i:= 0 to Memo1.Lines.Count do      //行数
 
 -   begin
 
 -     PosReturn:= Pos(FindDialog1.FindText, Memo1.Lines[i]);
 
 -     If PosReturn <> 0 then
 
 -     begin
 
 -       Skipchars:= 0;
 
 -       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;
 
  复制代码 
能帮我解释下 
 
      Skipchars:= 0; 
      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); 
这部分代码具体是啥意思呀 没看懂 
我以前也没看懂,现在我帮你理解下整个函数。 
procedure TForm1.Find1Click(Sender: TObject); 
begin 
  FindDialog1.FindText:= Memo1.SelText;   //   执行查抄 
  FindDialog1.Execute; 
end; 
 
procedure TForm1.FindDialog1Find(Sender: TObject); 
var 
  i, j, PosReturn, SkipChars: Integer; 
begin 
  For i:= 0 to Memo1.Lines.Count do      //行数 
  begin 
    PosReturn:= Pos(FindDialog1.FindText, Memo1.Lines);//寻找你输入的关键字从第0行开始。 
    If PosReturn <> 0 then   //如果不为空,那么就是那行就有你要找的‘文字’ 
    begin 
      Skipchars:= 0; 
      For j:= 0 to i-1 do     //当i=o时候,代表搜索第一行就有你的关键字,此时就不用循环了。 
      Skipchars:= Skipchars + Length(Memo1.Lines[j]);//加上第j行所有的字符数      SkipChars:= SkipChars + (i*2);//加上每行末尾的换行字符#13#8,如果我没想错的话。 
      SkipChars:= SkipChars + PosReturn - 1;// 加上你所搜索的关键字在那行的位置。 
 
      Memo1.SetFocus;  // 这个不知道,应该就是锁定当前程序(专业名词不会) 
      Memo1.SelStart:= SkipChars; //选择上面所算出的整数。 
      Memo1.SelLength:= Length(FindDialog1.FindText);//所选择的长度。 
      Break; 
    end; 
  end; 
end; 
 
 
 
 |   
 
 
 
 |