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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2009, 21:29   #1
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию удаление строк в файле

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
l:Tstrings;
i,k,z:integer;
begin
l:=tstringlist.Create;
l.loadfromfile('D:\loko.txt');
for i:=0 to L.Count-1 do
if pos('Россия',L.Strings[i])<>0 then
 begin
   k:=i;// строку определяет верно
   end;
   begin
for i:=k to L.Count-1 do
 begin
l.Delete(0);//удаляем все начиная от строки k
l.SaveToFile('D:\loko1.txt');
end;
l.Free;
end;
end;
end.
запускается только не верно удаляет

Последний раз редактировалось Stilet; 25.08.2009 в 08:53.
lg12 вне форума Ответить с цитированием
Старый 24.08.2009, 21:40   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Во-первых, для кода используйте тег CODE ().
Во-вторых, что программа должна делать? Удалять все строки, содержащие "Россия"?
Во-третьих, жуткая путаница с бегинами-эндами. Не удивительно, что не работает.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var l:Tstrings;
i,k,z:integer;
begin
l:=tstringlist.Create;
l.loadfromfile('D:\loko.txt);
i := 0;
while i<L.Count do
 begin
 if pos('Россия',L.Strings[i])<>0 then
  begin
  L.Delete(i);
  dec(i);
  end;
 inc(i);
 end;

l.SaveToFile('D:\loko1.txt');

l.Free;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.08.2009, 21:51   #3
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

программа должна удалять все строки после строки с текстом россия.
например такой файл:
дорога
дорога
Россия
привет
привет.
должно остаться
привет
привет.
lg12 вне форума Ответить с цитированием
Старый 24.08.2009, 21:56   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Уже которую тему создаете, написал Вам кучу вариантов, все равно не понимаете суть работы со строками и файлами. Надо просто сесть, хорошо подумать, что Вы хотите и все нормально написать.
puporev вне форума Ответить с цитированием
Старый 24.08.2009, 21:58   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от lg12
программа должна удалять все строки после строки с текстом россия.
например такой файл:
дорога
дорога
Россия
привет
привет.
Цитата:
должно остаться
привет
привет.
Должно удаляться все, что после "России", а в вашем примере получается, что все, что до.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var l:Tstrings;
i,k,z:integer;
begin
l:=tstringlist.Create;
l.loadfromfile('D:\loko.txt');
i := 0;
while i<L.Count do
 begin
 if pos('Россия',L.Strings[i])<>0 then
  begin
  for k:=i to L.Count-1 do
   L.Delete(i);
  break;
  end;
 inc(i);
 end;

l.SaveToFile('D:\loko1.txt);

l.Free;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.08.2009, 23:52   #6
lg12
Пользователь
 
Регистрация: 20.06.2009
Сообщений: 50
По умолчанию

а код то рабочий. Просто нужно было изменить
Код:
l.Delete(0);
на
Код:
l.Delete(k);
. Зачем сразу свой код писать, если новичку будет понятнее его творение.все мы с чего то начинали

Последний раз редактировалось Stilet; 25.08.2009 в 08:54.
lg12 вне форума Ответить с цитированием
Старый 25.08.2009, 00:00   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от lg12
а код то рабочий.
Да уж где-же он рабочий-то?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
l:Tstrings;
i,k,z:integer;
begin
l:=tstringlist.Create;
l.loadfromfile('D:\loko.txt');
for i:=0 to L.Count-1 do
 if pos('Россия',L.Strings[i])<>0 then
  begin
  k:=i;// строку определяет верно
  end;
  begin   // что за begin и откуда взялся - непонятно
  for i:=k to L.Count-1 do
   begin
   l.Delete(0);
   l.SaveToFile('D:\loko1.txt');  // сохраняете список в файл в цикле!
   end;
  l.Free;  // уничтожаете список, а цикл продолжает работать
  end;
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество строк в файле Demien Общие вопросы Delphi 3 17.08.2009 18:48
Поиск строк в файле (паскаль) Sarumjan Помощь студентам 2 07.12.2008 23:15
Колиество строк в файле Аlex Помощь студентам 9 17.05.2008 21:57
Поиск одинаковых строк в файле ATL Помощь студентам 13 02.05.2007 01:05