![]() |
|
|
#1
|
|||
|
|||
|
Можно ли с помощью делфи осуществлять поиск нужного мне слова в файлах *txt, если да, то как???
|
|
#2
|
|||
|
|||
|
Можно.
Например (пример не оптимальный, но зато самый простой). Код:
function FindText(AFileName, AText : String; ACaseSensitive : Boolean) : Boolean;
var
S : TStringList;
begin
S := TStringList.Create;
Try
S.LoadFromFile(AFileName);
If ACaseSensitive
Then Result := Pos(AText,S.Text) > 0
Else Result := Pos(AnsiUpperString(AText),AnsiUpperString(S.Text)) > 0;
Finally
S.Free;
End;
end;Перебор файлов сам напишешь? |
|
#3
|
|||
|
|||
|
неа ))))
я еще не понял, где мне в этом коде указывать какой именно файл я открываю и как связать поиск со значением, которое я ввожу например в TEdit |
|
#4
|
|||
|
|||
|
Я тебе написал функцию, кторая ринимает имя файла и текст. Результат выполнения - есть ли текст в указанном файле (True) или его там нету (False). Дополнительный третий параметр - искать текст с учетом регистра символов или нет.
Итак. - AFileName - полное имя файла - AText - искомый текст - ACaseSensitive - учитывать при поиске регистр или нет. поиск файлов (если тебе нужен не конкретный, а любой) осуществляется с помощью функций FindFirst/FindNext/FindClose. Их использование см. в ФАКе на данном сайте. |
|
#5
|
|||
|
|||
|
понял - спс
|
|
#6
|
|||
|
|||
|
Не проще так (правда ограничение файла 2Гб):
Код:
var
s: string;
f: TFileStream;
begin
f := TFileStream.Create(AFileName, fmOperRead);
setlength(s, f.Size);
f.Read(s[1], f.Size);
f.Free;
If ACaseSensitive
Then Result := Pos(AText, s) > 0
Else Result := Pos(AnsiUpperString(AText), AnsiUpperString(s)) > 0;
end;Admin: Пользуемся тегами для оформления кода! Последний раз редактировалось Admin, 21.05.2008 в 20:14. |
|
#7
|
|||
|
|||
|
И чем это проще?
Дополнительными вызовами? Более того, фактически, внутри TStringList именно это и делается (загрузка). |