|
Вопрос # 2 185/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Есть текстовый файл. с клавиатуры вводится слово или его часть, нужно в файле найти все слова которые включают введенное слово и записать в отдельный файл.
 |
Вопрос задал: 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 (статус: Посетитель), 11 декабря 2008, 17:22 [#2]:
Ничего сложного тут не вижу...
анализ разделителей и поиск строки...
Обычно захожу по ночам... (60-70%)
Если нужно что-то написать, то беру оборудованием, деньгими и пивом(при личной встрече)...
P.S. Помогаю и рассказываю бесплатно ^_^.....Nyaaa!
|
|
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 (статус: 2-ой класс), 11 декабря 2008, 20:33 [#4]:
Да! И работать корректно будет только с исходным файлом в ANSI
|
|
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 (статус: Посетитель), 12 декабря 2008, 13:20 [#7]:
Большое спасибо, очень помогло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|