На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Регистр букв / Delphi XE
    Код полностью рабочий:
    Как в это коде обрабатывать без учета регистра букв, сейчас обрабатывается текст с учетом регистра букв:
    ExpandedWrap disabled
      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() do
          begin
            // Читаем следующую строку из файла
            Readln(F, Str);
            // Сравнение для всех подстрок начинаем с 1 символа
            for i := 0 to LenArray - 1 do
              Idx[i] := 1;
            // Пока не нашли ни одной подстроки
            MatchCnt := 0;
            // Сравниваем каждый считанный символ с текущей позицией в искомой подстроке
            for CharIdx := 1 to Length(tr) do
              for i := 0 to LenArray - 1 do
              begin
                LenStr := Length(Matching[]);
                // Если еще не нашли всю подстроку
                if Idx[i] <= LenStr then
                begin
                  // Если текущий считанный символ совпадает с текущим символом в искомой подстроке
                  if Str[CharIdx] = Matching[i, dx[i]] then
                  begin
                    // Если дошли до конца подстроки, то совпали все символы
                    if Id[i] = LenStr hen
                    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;
    Сообщение отредактировано: Kirilis2018 -
      Считанную строку из файла приведи в верхний или нижний регистр через UpperCase или LowerCase. После Readln(F, Str); поставь Str:=UpperCase(Str); и ту строку с которой сравниваешь тоже стало быть приведи в этот-же регистр.
        Цитата ^D^ima @

        Благодарю, получилось!
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0319 ]   [ 17 queries used ]   [ Generated: 28.03.24, 15:48 GMT ]