Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регистр букв / Delphi XE 
V
    Опции темы
Campus2000
Дата 2.6.2018, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.2.2018

Репутация: нет
Всего: нет



Код полностью рабочий: 
Как в это коде обрабатывать без учета регистра букв, сейчас обрабатывается текст с учетом регистра букв:
Код

var
  LenArray: Integer;
  Str: string;
  // В какой файл пишем результат
  fResult: TextFile;
  Idx: array of Integer;
  i: Integer;
  // Какой символ из считанной строки сравнивается
  CharIdx: Integer;
  // Сколько подстрок совпало
  MatchCnt: Integer;
  LenStr: Integer;
begin
  LenArray := Length(Matching);
  SetLength(Idx, LenArray);
  try
    // Открываем файл для записи найденых данных
      i := 0;
      AssignFile(fResult, GenerateFileName(ExtractFilePath((TTextRec(F).Name)) + 'Rez_' + IntToStr(i + 1) + ExtractFileExt(TTextRec(F).Name)));
      Rewrite(fResult);
      // Файл открылся, 0 убрали
     for i := 0 to LenArray - 1 do
      Idx[i] := 1;
 
    while not Eof(F) do
    begin
      // Читаем следующую строку из файла
      Readln(F, Str);
      // Сравнение для всех подстрок начинаем с 1 символа
      for i := 0 to LenArray - 1 do
        Idx[i] := 1;
      // Пока не нашли ни одной подстроки
      MatchCnt := 0;
      // Сравниваем каждый считанный символ с текущей позицией в искомой подстроке
      for CharIdx := 1 to Length(Str) do
        for i := 0 to LenArray - 1 do
        begin
          LenStr := Length(Matching[i]);
          // Если еще не нашли всю подстроку
          if Idx[i] <= LenStr then
          begin
            // Если текущий считанный символ совпадает с текущим символом в искомой подстроке
            if Str[CharIdx] = Matching[i, Idx[i]] then
            begin
              // Если дошли до конца подстроки, то совпали все символы
              if Idx[i] = LenStr then
              begin
                // Увеличиваем число совпадений
                Inc(MatchCnt);
                // Записываем считанную строку в нуужный файл
                Writeln(fResult, Str);
              end
            else
                // Увеличиваем позицию
                Inc(Idx[i]);
            end
          else
              // Если текущий считанный символ НЕ совпадает с текущим символом в искомой подстроке
              // то начинаем поиск по этой подстроке сначала
              Idx[i] := 1;
          end;
        end;
        // Если нашли ВСЕ подстроки, то дальше проверять символы не нужно
        if MatchCnt = LenArray then
          Break;  // прерываем текущую итерацию
      end;
  finally
         // Закрываем файл с полученным результатом
        CloseFile(fResult);
  end;
end;

PM MAIL   Вверх
Snowy
Дата 4.6.2018, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11321
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 482



if Str[CharIdx] = Matching[i, Idx[i]]
->
if AnsiLowerCase(Str[CharIdx]) = AnsiLowerCase(Matching[i, Idx[i]])
PM MAIL   Вверх
_zorn_
Дата 7.6.2018, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 921
Регистрация: 21.8.2007

Репутация: нет
Всего: 12




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Campus2000
Дата 9.6.2018, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.2.2018

Репутация: нет
Всего: нет



Snowy, Спасибо огромное, все получилось!
PM MAIL   Вверх
Google
  Дата 21.6.2018, 07:24 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1327 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.