Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 185

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Есть текстовый файл. с клавиатуры вводится слово или его часть, нужно в файле найти все слова которые включают введенное слово и записать в отдельный файл.

ratmin Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: ratmin (статус: Посетитель)
Вопрос отправлен: 11 декабря 2008, 14:44
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Nasgool

Здравствуйте, ratmin!
Общий алгоритм приведен ниже, но доработать нужно условие дл работы с простыми текстовыми файлами. Разделитель не один, а много. Условие в виде логического умножения: (Условие1) and (Условие2) and (Условие3) and (Условие4).....

Ответ отправил: Nasgool (статус: 2-ой класс)
Время отправки: 11 декабря 2008, 20:30
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 12 декабря 2008, 13:20; участников в обсуждении: 4.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 11 декабря 2008, 16:48 [#1]:

Какие разделители слов применяются?
Death_Master

Death_Master (статус: Посетитель), 11 декабря 2008, 17:22 [#2]:

Ничего сложного тут не вижу...
анализ разделителей и поиск строки...
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
Nasgool

Nasgool (статус: 2-ой класс), 11 декабря 2008, 20:22 [#3]:

var
InputFile: TFileStram;
OutputFile: TStringList;
Word1, Word2: String;
Buff: Char;

begin
InputFile := TFileStream.Create('Имя файла а котором будем искать');
OutputFile := TStringList.Create;
Word2 := 'некое слово с которым будет идти сравнение';
while File.position < SizeOf(File) do
begin
File.Read(Buff, 1);
if Buff = 'некий разделитель слов' then
begin
if Pos(Word1, Word2) <> 0 then
OutputFile.Add(Word1);
Word1 := '';
end
else
Word1 := Word1 + Buff;
end;
OutputFile.SaveToFile('имя файла для записи результата');
OutputFile.Free;
InputFile.Free;
end.

Сори. ошибся. Но уже исправил.
Nasgool

Nasgool (статус: 2-ой класс), 11 декабря 2008, 20:33 [#4]:

Да! И работать корректно будет только с исходным файлом в ANSI
ratmin

ratmin (статус: Посетитель), 11 декабря 2008, 21:26 [#5]:

Большое спасибо, но мне нужно в tp7.0 а не в delphi, если напишешь в паскале буду очень благодарен
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 12 декабря 2008, 05:56 [#6]:

var InputFile,OutputFile:text;
....
assignfile(InputFile,'имя входного файла');
reset(InputFile);
assignFile(OutputFile,'имя выходного файла');
rewrite(OutputFile);

вместо file.read ставишь read(InputFile,Buff);
вместо while File.position < SizeOf(File) ставишь while not(eof(InputFile))

Только надо в нутри цикла сделать проверку на конец строки и если оно выполняется то сделать readln, иначе получится бесконечный цикл.
OutputFile.Add(Word1) заменить на writeln(OutputFile,Word1);

в конце не забыть closefile(InputFile); closeFile(OutputFile);
В tp, возможно, не assignfile и closefile, а просто assign и close
ratmin

ratmin (статус: Посетитель), 12 декабря 2008, 13:20 [#7]:

Большое спасибо, очень помогло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:44
Выполнено за 0.03 сек.