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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск фрагмента текста в файле, поиск текста в файлах заданного каталога 
:(
    Опции темы
Good Man
Дата 13.6.2002, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите, пожалуйста, функцию, которая бы осуществляла поиск определенного текста в файле.

К примеру:
В качестве аргументов выступают: имя файла и искомый текст. Если текст найден, то функция возвращает – true.
PM MAIL   Вверх
Vit
Дата 13.6.2002, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Читаешь файл по строкам или по кускам или целиком и в каждой ищешь нужную строку...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Good Man
Дата 13.6.2002, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужный текст необходимо искать в HTML-файлах.
Если можно, покажите хоть какой-нибудь пример.
PM MAIL   Вверх
Vit
Дата 13.6.2002, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



HTML обычно не очень большого размера. Я бы грузил целиком:

Код

Function IsLineInFile(FileName, Substr:string):boolean;
begin
 with TStringList.create do
   try
     LoadFromFile(FileName);
     result:=pos(Substr, Text)>0;
   finally
     Free;
   end;
end;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Good Man
Дата 13.6.2002, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Большое спасибо! :)
PM MAIL   Вверх
Song
Дата 14.6.2002, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



Я бы загрузил файл в TRichEdit
У него есть свой быстрый метод для поиска.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Good Man
  Дата 14.6.2002, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А можно ли производить поиск с учетом регистра и учитывать слово целиком?
PM MAIL   Вверх
Vit
Дата 14.6.2002, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Точно так же, посмотри строковые функции в Дельфи хэлпе


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Good Man
Дата 15.6.2002, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотрел функции в Help. Наиболее близкой является:

AnsiStrComp(S1, S2: PChar): Iteger;

Выполняет сравнение двух строк с учетом регистра. Если строка S1 > S2, то функция возвращает положительное значение, если S1 < S2, функция возвращает отрицательное значение, и если S1 = S2, то возвращается значение 0.

Эта функция сравнивает с учетом регистра. Но, к сожалению, не сравнивает слово целиком:

Код

var
 MyPos: Integer;

function IsLineInFile1(FileName, Substr:string):boolean;
begin
with TStringList.create do
  try
    LoadFromFile(FileName);
    MyPos := pos(Substr, Text);
    if MyPos >0 then
       begin
         if AnsiStrComp(PChar(Substr), PChar(Copy(Text, MyPos, Length(Substr)))) = 0 then result:=true
         else result:=false;
       end
    else
       result:=false;
  finally
    Free;
  end;
end;

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


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Чтобы сравнивать слова целиком, то надо просто если шаблон найден, выяснить какой предыдущий и последующие байты, если они не принадлежат множеству: ['A'..'Z','a'..'z', '0'..'9'] то это целое слово. А если пойти методом, указанным song (загрузить в RTF), то если мне не изменяет память, то там методы поиска имеют опцию - искать целое слово.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Good Man
  Дата 15.6.2002, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как это может выглядеть ввиде кода?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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