Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.216.18] |
|
Сообщ.
#1
,
|
|
|
Код полностью рабочий:
Как в это коде обрабатывать без учета регистра букв, сейчас обрабатывается текст с учетом регистра букв: 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; |
Сообщ.
#2
,
|
|
|
Считанную строку из файла приведи в верхний или нижний регистр через UpperCase или LowerCase. После Readln(F, Str); поставь Str:=UpperCase(Str); и ту строку с которой сравниваешь тоже стало быть приведи в этот-же регистр.
|
Сообщ.
#3
,
|
|
|
Цитата ^D^ima @ Благодарю, получилось! |