Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2022, 17:32   #11
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
FilesListSel: array of record // Или FilesListSel: array of Cardinal;
   Name: String[128];
   Folder: Cardinal;
  end;
//...
edit := AnsiUpperCase('DEVELOPMENT'); // Зачем искомую строку пересчитывать при поиске в каждом файле. Ее можно вынести из общего цикла
for i := 0 to Length(FilesList) - 1 do
  begin
    MainForm.Memo1.Lines.Add(FilesList[i].Name);
    if ProgressThreadTerminated then Break;
    Str(i, S1);
    Str(Length(FilesList) - 1, S2);
    MainForm.ProgressStatus.Caption := S1 + ' из ' + S2 + ' ';
// Зачем вам вообще этот цикл
//    for j := i + 1 to Length(FilesList) - 1 do
//    begin
       FileMode := fmOpenRead;
       AssignFile(F1, GetPath(FilesList[i].Folder) + FilesList[i].Name);
       Reset(F1);
      while not Eof(F1) do
      begin
          ReadLn(F1, text);
          if  Pos(edit, AnsiUpperCase(text)) <> 0 then
          begin
           SetLength(FilesListSel, Length(FilesListSel) + 1);
           FilesListSel[High(FilesListSel)].Name := FilesList[i].Name; // Или
           FilesListSel[High(FilesListSel)].Folder := FilesList[i].Folder; // FilesListSel[High(FilesListSel)] := i;
           Break;
          end;
       end;
       CloseFile(F1);
//    end;
  end;

Последний раз редактировалось macomics; 13.06.2022 в 18:48.
macomics вне форума Ответить с цитированием
Старый 15.06.2022, 17:50   #12
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию

Спасибо за помощь, все работает я протестировала. Находит, нужные файлы.
Катя93 вне форума Ответить с цитированием
Старый 15.06.2022, 19:54   #13
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Попробуйте протестировать на файлах из архива. Тогда не сработает. Но это как раз то о чем я говорил с самого начала.
Текст во всех файлах одинаковый. И даже блокнот не покажет различий. Но закодированы они по разному, поэтому ваш алгоритм будет находить не все из этих файлов.
Кодировка символов это правило (таблица преобразования), по которому идет сопоставление кода символа (байт из файла) с его графическим представлением (на экране).
Пока программа работает с текстом в рамках оперативной памяти или с файлами, созданными этой программой, данной проблемы не существует (до поры до времени).
Но при написании алгоритма поиска текста в файлах - это одна из главных проблем в алгоритме. Как правило, для ее решения после загрузки файла в память текст из файла
преобразуется к кодировке способной закодировать все возможные символы (WideString) и поиск подстроки выполняется в этой кодировке.
Вложения
Тип файла: zip check.zip (842 байт, 1 просмотров)

Последний раз редактировалось macomics; 15.06.2022 в 20:25.
macomics вне форума Ответить с цитированием
Старый 16.06.2022, 08:56   #14
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию

Везде где встречается DEVELOPMENT точное вхождение (термин из области SEO) ищет. Однако если попадается закодированное слово например “текст”, то он игнорирует этот файл. Вообщем я поняла о чем вы, только в моем случае это неважно, все мои файлы исключительно на анлийском или русском языке. Если понадобиться найти закодированное слово, наверное потребуется, добавить в код условие при котором указанный ключ будет кодироваться, а потом сравнивать зашифрованный вариант.
Катя93 вне форума Ответить с цитированием
Старый 28.06.2022, 23:27   #15
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
По умолчанию

2 Катя93, если я правильно понял macomics. то речь не о каком-либо алгоритме шифрования, а о таблицах кодировок символов (Win-1251, CP866, KOI8-R, UTF (Unicode)), тогда у вас могут возникать "пропускания" файлов с ключевыми словами, которые вы ищете на любом языке (включая русский) кроме английского.

Последний раз редактировалось hexor_boo; 28.06.2022 в 23:37. Причина: Подправил форматирование
hexor_boo вне форума Ответить с цитированием
Старый 28.06.2022, 23:44   #16
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Именно это я и пытаюсь донести. Пока программа работает с файлами собственного производства или находится в пределах RAM, то эта проблема решена в целом для программы в настройках компилятора. Но стоит начать работать с текстовыми файлами в системе в целом, тогда сразу появляется проблема кодировки текста разными таблицами символов (не шифрования, хотя это не далеко ушло от шифрования, по сути это и есть простейшее шифрование по таблице сопоставляемых значений).
macomics вне форума Ответить с цитированием
Старый 28.06.2022, 23:50   #17
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 106
По умолчанию

2 macomics, урааа!!! Я нашел свое применение Обожаю разъяснять доступным языком (и кратко по возможности) то, что сложно кому-то объяснить

Последний раз редактировалось hexor_boo; 28.06.2022 в 23:58.
hexor_boo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Free Pascal] Сортировка списка очереди. Dikoobraz Помощь студентам 3 25.04.2013 21:33
Реализация очереди с элементами из списка Quadrelle Паскаль, Turbo Pascal, PascalABC.NET 1 20.04.2013 22:05
Как нескольким потокам брать строку из одного списка по очереди? trafbite Общие вопросы Delphi 23 12.03.2012 19:34
Списка. Стеки, очереди, Кольца c++ megavolt91 Помощь студентам 0 01.06.2009 20:23