procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
begin
  S := '你要查询的字符';
  Memo1.SelStart := Pos(S, Memo1.Text);
  if Memo1.SelStart > 0 then Memo1.SelLength := Length(S);
  Memo1.SetFocus;
end;

解决方案 »

  1.   

    //from <<葵花宝典7.0正本>>
    首部  function SearchBuf(Buf: PChar; BufLen: Integer; SelStart, SelLength: Integer; SearchString: String; Options: TStringSearchOptions = [soDown]): PChar; $[StrUtils.pas
    功能  返回第一个搜索到的指针位置
    说明  这函数常用于文本中搜索字符串
    参考  <NULL>
    例子  
    ///////Begin SearchBuf
    function SearchEdit(EditControl: TCustomEdit; const SearchString: String;
      SearchOptions: TStringSearchOptions; FindFirst: Boolean = False): Boolean;
    var
      Buffer, P: PChar;
      Size: Word;
    begin
      Result := False;
      if (Length(SearchString) = 0) then Exit;
      Size := EditControl.GetTextLen;
      if (Size = 0) then Exit;
      Buffer := StrAlloc(Size + 1);
      try
        EditControl.GetTextBuf(Buffer, Size + 1);
        P := SearchBuf(Buffer, Size, EditControl.SelStart, EditControl.SelLength,
          SearchString, SearchOptions);
        if P <> nil then begin
          EditControl.SelStart := P - Buffer;
          EditControl.SelLength := Length(SearchString);
          Result := True;
        end;
      finally
        StrDispose(Buffer);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      SearchOptions: TStringSearchOptions;
    begin
      SearchOptions := [];
      if CheckBox1.Checked then
        Include(SearchOptions, soDown);
      if CheckBox2.Checked then
        Include(SearchOptions, soMatchCase);
      if CheckBox3.Checked then
        Include(SearchOptions, soWholeWord);
      SearchEdit(Memo1, Edit1.Text, SearchOptions);
      Memo1.SetFocus;
    end;
    ///////End SearchBuf