Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2010, 21:12   #1
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию файлы

дан текстовый файл F и строка S. Переписать в файл G все строки файла F содержащие значения S в качестве подстроки.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
f,g:textfile;
s,s1,s2:string;
i:integer;
begin
s:=edit1.text;// вводим подстроку
memo1.Lines.Clear;
AssignFile (f, 'D:\1.txt');
AssignFile (g, 'D:\Учёба\програмирование\2 семестр\file2\2.txt');
reset (f);
while not EOF (f) do
begin
readln(f,s2);
memo1.Lines.add(s2);//выводим первый файл на печать в котором ищем подстроки
end;
closefile(f);
reset(f);
rewrite(g);
while not EOF (f) do
begin
read (f, s1);
if Pos(s1,s)<>0 then //если позиция вхождения подстроки не равно 0 то записываем строку в файл G
write(g,s);
end;
closefile(f);
closefile(g);
reset (g);
while not EOF (g) do
begin
readln(g,s2);
memo1.Lines.add(s2);//выводим на печать файл G
end;
closefile(g);
end;
end.
помогите найти ошибки
shelest вне форума Ответить с цитированием
Старый 10.03.2010, 23:15   #2
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Я бы так сделал.

Код:
procedure TForm1.btn1Click(Sender: TObject);
var
f,g:textfile;
s,s1:string;
i:integer;
begin
s:=edt1.text;
mmo1.Lines.Clear;
AssignFile (f, 'C:\in.txt');
AssignFile (g, 'C:\out.txt');
 reset(f);
while not Eof(f) do begin
  Readln(f,s1);
  mmo1.Lines.Add(s1);
  end;

CloseFile(f);
Rewrite(g);

for i:=0 to mmo1.Lines.Count do begin
 if pos(s,mmo1.Lines[i])<>0 then  begin
  Writeln(g,mmo1.Lines[i]);
  mmo2.Lines.Add(mmo1.Lines[i]);
  end;
  end;
  CloseFile(g);

end;
end.
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 10.03.2010, 23:21   #3
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

спасибо большое
shelest вне форума Ответить с цитированием
Старый 11.03.2010, 03:01   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
 AssignFile (f, 'C:\in.txt');
 reset(f);
while not Eof(f) do begin
  Readln(f,s1);
  mmo1.Lines.Add(s1);
  end;
CloseFile(f);
А ВОТ ЭТО СОВЕРШЕННО ЗРЯ!!
процитированный кусочек кода ПОЛНОСТЬЮ заменяется ОДНОЙ строчкой кода:
Код:
mmo1.Lines.LoadFromFile('C:\in.txt')


и ещё вот!
Цитата:
Код:
for i:=0 to mmo1.Lines.Count do begin
а вот здесь допущена грубая ошибка!
цикл выдаст exception - выход за пределы! надо крутить цикл до mmo1.Lines.Count - 1
Код:
for i:=0 to mmo1.Lines.Count-1 do begin

Последний раз редактировалось Serge_Bliznykov; 11.03.2010 в 03:04.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.03.2010, 07:09   #5
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Serge_Bliznykov, да знаю, что криво написал, за Count вообще стыдно Просто писал в час ночи(по моему времени, взял то что shelest написал и чуть поправил) голова не особо думала уже
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы Raptor5 Общие вопросы .NET 1 25.09.2009 19:55
Файлы Archangelos Паскаль, Turbo Pascal, PascalABC.NET 1 01.06.2009 11:27
Файлы xxxPascalxxx Помощь студентам 4 11.03.2008 00:35
Файлы madmot Операционные системы общие вопросы 3 06.02.2008 12:10
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53