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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 5 169

/ вопрос решён /

Здравствуйте! У меня такая задача:
Вот представьте огромный каталог. Тысячи текстовых документов. И в 1 из них есть в конце файла строка 'kill me'(без кавычек). Программа должна найти этот ненужный документ и удалить СТРОКУ. Как это сделать, если я не буду использовать memo, то поставят 4 или 5, если буду, то 2 или 3(оценка). Прошу, помогите хотябы на 4.

Кудя Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Кудя (статус: Посетитель)
Вопрос отправлен: 9 апреля 2011, 13:33
Состояние вопроса: решён, ответов: 0.


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

Всего сообщений: 23; последнее сообщение — 9 апреля 2011, 21:55; участников в обсуждении: 3.

Страницы: [1] [2] [Следующая »]

Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 13:38 [#1]:

а зачем мемо? есть же странглисты или как их там - как бы те же мемо, только невидимые.
ну, на худой конец, можно readln использовать
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 13:39 [#2]:

Цитата (Кудя):

Прошу, помогите хотябы на 4.

в чём должна заключаться помощь?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 15:09 [#3]:

направите меня по правильному пути к решению задачи.
Егор, я сделал с помощью TStringList, но как закрыть потом этот файл?
Think Different. (c)
min@y™

min@y™ (статус: Доктор наук), 9 апреля 2011, 16:28 [#4]:

Файл закрывать не надо, он автоматически закрывается после считывания в память методом TStrings.LoadFromFile().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 18:20 [#5]:

var
sl:TStringList;
i:integer;
begin
           sl:= TStringList.Create;
//-------------------------------------------------------------------------------------
           sl.LoadFromFile('C:\bla\bla\not me.txt');
           for I := sl.Count - 1 downto 0 do
begin
           if Pos('kill me', sl.Strings[I]) > 0 then
           sl.Delete(I);
           sl.SaveToFile('C:\bla\bla\not me.txt');
           sl.Free;
end;
end.
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 18:21 [#6]:

почему программа не удаляет строку?
Пишет ошибку: project exercise6.exe raised exception class EStringListError with messages 'List index out of bounds(2)'
Think Different. (c)
min@y™

min@y™ (статус: Доктор наук), 9 апреля 2011, 18:29 [#7]:

Кошмарное форматирование.

Цитата (Кудя):

почему программа не удаляет строку?

Потому что sl освобождается в первом проходе цикла.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 18:31 [#8]:

я немного не вникаю=)
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 18:32 [#9]:

с цифрами чтото не так?=)
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 19:38 [#10]:

знаешь такую вещь, как отладчик? вот его используй. у тебя цикл. в этом цикле в первом проходе идёт сравнение i-ой (последней) строки с "kill me", а потом файл закрывается. затем начинается второй проход - а файл-то уже закрыт!

кстати, вот правильное оформление кода:
var
  sl:TStringList;
  i:integer;
begin
  sl:= TStringList.Create;
//-------------------------------------------------------------------------------------
  sl.LoadFromFile('C:\bla\bla\not me.txt');
  for I := sl.Count - 1 downto 0 do
  begin
    if Pos('kill me', sl.Strings[I]) > 0 then
       sl.Delete(I);
    sl.SaveToFile('C:\bla\bla\not me.txt');
    sl.Free;
  end;
end.
больше форматировать не буду, сам изначально делай корректное оформление.

я думаю, тебе понятно, как исправить ситуацию?
вообще, я так смотрю, мыслишь ты в правильном направлении.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 20:28 [#11]:

а чем эти 2кода отличаются??
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 20:42 [#12]:

форматированием.
правильное форматирование - очень важно. при неправильном форматировании код плохо читается.
в принципе, можно же вообще всю программу в одну строку забить:
var sl:TStringList;i:integer;begin sl:=TStringList.Create;sl.LoadFromFile('C:\bla\bla\not me.txt');for
I:=sl.Count-1 downto 0 do begin if Pos('kill me', sl.Strings[I])>0 then sl.Delete(I);sl.SaveToFile(
'C:\bla\bla\not me.txt');sl.Free;end;end.
скомпилится.
но человек не поймёт. а тексты программ пишутся не для компьютеров, а для людей! из нескольких более-менее равнозначных вариантов выбирай тот, который понятнее.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 20:44 [#13]:

в коде, кстати, ошибка-то пока ещё осталась - я не поправлял.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 20:45 [#14]:

так блин, я же читабельно написал, даже отделял чёрточками этапы по очереди. Меня сейчас интересует, почему программа не удаляет эту строку=(
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 20:50 [#15]:

по идее всё казалось легко, а тут не удаляет=)
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 21:00 [#16]:

и минай, и я расписали же, почему

и ты не ответил - что такое отладчик, знаешь?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 21:03 [#17]:

нет=(
Think Different. (c)
Егор

Егор (статус: 10-ый класс), 9 апреля 2011, 21:10 [#18]:

ладно. фиг с ним, с отладчиком. найди книжку какую-нибудь по дельфи (я рекомендую фаронова, но тут на твой вкус) и чтобы была глава, посвящённая отладке программ. прочитаешь - поймёшь. что это изумительный инструмент. позволяет выполнять программу по шагам, при этом можно просматривать значения переменных (и даже менять!) ну и т.д.

по ошибке - прочитал объяснения миная и моё? если прочитал, то что непонятно? я вроде расписал подробно причину ошибки.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 21:23 [#19]:

Вы думаете я такой умный, пойму вас. Вот Минау писал о цикле, это я понял, но ГДЕ этот цикл?
Think Different. (c)
Кудя

Кудя (статус: Посетитель), 9 апреля 2011, 21:28 [#20]:

читаю про отладку=)
Think Different. (c)

Страницы: [1] [2] [Следующая »]

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

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