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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2009, 16:07   #1
lexus_samara
Новичок
Джуниор
 
Регистрация: 12.08.2009
Сообщений: 1
По умолчанию Как программно удалить одну строку из текстового файла(txt)?

Как удалить одну строчку из текстового файла? Путь к файлу хранится в label. Поясню точнее на примере...
Есть каталог: files/folds. В ней 3 папки (fold1, fold2, fold3). В каждой из этих папок есть по 4 текстовых файлов с одинаковыми названиями (fold1.txt, fold2.txt, fold3.txt, fold4.txt).
В зависимости от выбранных параметров в label1 записывается строка типа '11', '12', '13', '14', '21', '22', '23', '24', '31', '32', '33', '34'. То есть label1 состоит из 2ух цифр. Первая обозначает папку (1 - это fold1, 2 - fold2, 3 - fold3). Вторая означает конкретный текстовый файл (1 - fold1.txt, 2 - fold2.txt и т.д.)
К примеру в label1 записано '23'. Как мне удалить одну строчку в файле files/folds/fold2/fold3.txt ???

Помогайте пожалуйста мастера

P.S. WinXP, Delphi 6
lexus_samara вне форума Ответить с цитированием
Старый 12.08.2009, 16:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

допустим так...:
Код:
procedure DeleteLineFromFile(FileName:string;LineNumber:integer);
var F:TStringList;
begin
 F:=TStringList.Create;
 F.LoadFromFile(FileName);
 F.Delete(LineNumber);
 F.SaveToFile(FileName);
 F.Free;
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.08.2009, 21:29   #3
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Напрямую из txt файла удалить нельзя (если не хитрить и не открывать его как file of byte, но тут надо правильно записывать данные). А как посоветовал Пепел Феникса - очень оригинально, я бы считывал файл и просто не переписывал ненужную строчку))
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 24.04.2010, 21:26   #4
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

А как программно удалить из txt строку по значению в Edit-е.
Допустим в Edit-е слово или число,отыскать строку в txt,где упоминается это слово или число и удалить.
Dj_SheLL вне форума Ответить с цитированием
Старый 24.04.2010, 22:01   #5
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

Уже разобрался.Может кому пригодится:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  i:integer;     //счетчик цикла
  del_str:string; //удаляемая строка
begin
del_str:=Edit1.Text;
Memo1.Lines.LoadFromFile('1.txt'); //загружаем файл в Memo
for i:=0 to Memo1.Lines.Count-1 do //цикл до последней строки Memo
if Memo1.Lines[i]=del_str then Memo1.Lines.Delete(i); //проверка условия и удаление строки
Memo1.Lines.SaveToFile('1.txt');//запись содержимого Memo в файл
end;
Dj_SheLL вне форума Ответить с цитированием
Старый 24.04.2010, 22:07   #6
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Как-то типа так:
Код:
procedure FoundWordAndDeleteFromFile(FileName, Word:string);
// другое имя не придумал xD
var
 F:TStringList;
 I: integer;
begin
 F:=TStringList.Create;
 F.LoadFromFile(FileName);
  for I := F.Count - 1 downto 0 do begin
   if Pos(Word, F.Strings[I]) > 0 then
    F.Delete(I);
  end;
 F.SaveToFile(FileName);
 ShowMessage(IntToStr(F.Count));
 F.Free;
end;
Мой пример ищет слово в строке, а не сравнивает его с ней и если найдено - удаляем всю строку целиком...

Последний раз редактировалось W0LF; 24.04.2010 в 22:09.
W0LF вне форума Ответить с цитированием
Старый 24.04.2010, 22:57   #7
Dj_SheLL
Форумчанин
 
Аватар для Dj_SheLL
 
Регистрация: 14.10.2009
Сообщений: 128
По умолчанию

О!Это даже лучше!Я не додумался до этого просто=)
Dj_SheLL вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить последнюю строку из файла Flame_of_Death Помощь студентам 6 21.07.2009 13:48
как программно сохранить .doc в .txt lil Общие вопросы .NET 7 04.06.2009 16:02
Вытащить из текстового файла нужную строку dup Общие вопросы Delphi 3 17.05.2009 21:45
Можно программно создать dll из текстового файла? hamann-2006 Помощь студентам 2 29.10.2007 10:41