Memo 中 使用 FindDialog

本文介绍了一个简单的文本查找算法实现,该算法能够在Memo控件中查找指定的文本,并高亮显示找到的内容。通过计算偏移量和位置,算法能准确定位到目标文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
  
begin
    PosReturn :
= Pos(FindDialog1.FindText,Memo1.Lines[I]);
    
if PosReturn <> 0 then {found!}
    
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值