Если можете напишите пожалуйста функцию как искать часть текст в файле использую память (поток)  возможно вы все правы только я упертый думаю что все что мы обсуждаем одно и тоже?
Добавлено спустя 55 минут 28 секунд:Вообщем нашел причину иза чего так долго ищет если при поиске не добавлять результат поиска в Synedit ищет так же быстро как и нотпед++
Теперь встал вопрос как  записать данные результата.
 Просто сохранять в переменную а после работы поиска выводить в synedit
Тормазить поиск так же не будет?
Вообщем все отлично вот результат --> Спасибо всем за общение)!!: Записал результат поиска на видео 
https://youtu.be/oJBfdDYORfg- Код: Выделить всё
 Var
  PachName: string;
  SearchFileT: SearchFileThread;
  PascalFiles, SL: TStringList;
  PascalFiles_1: string;
  f, i: integer;
  flag: boolean = False;
  fileNameSearchResult: TStringList;   
.................................................
  begin
  SL := TStringList.Create;
  PascalFiles := TStringList.Create;
  fileNameSearchResult := TStringList.Create;
  FindAllFiles(PascalFiles, PachName, '*', True);
  for f := 0 to PascalFiles.Count - 1 do
  begin
    if flag then
    begin
      SL.LoadFromFile(PascalFiles.Strings[f]);   //Открываем файл
      Form3.ProgressBar1.Position := f;
      for i := 0 to SL.Count - 1 do
      begin
        if pos(UTF8LowerCase(Trim(Form3.ComboBox1.Text)),
          UTF8LowerCase(Trim(SL.Strings[i]))) > 0 then
        begin
          if Trim(PascalFiles.Strings[f]) <> Trim(PascalFiles_1) then
          begin
            fileNameSearchResult.Add('Файл| ' + PascalFiles.Strings[f]);
            PascalFiles_1 := PascalFiles.Strings[f];
          end;
          fileNameSearchResult.Add('Line ' + IntToStr(i) + ': ' + SL.Strings[i]);
        end;
      end;
end; 
//Выводим результат поиска 
  Form1.SynEdit1.Text := fileNameSearchResult.Text;
  end;