Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 68, средняя оценка - 4.66
papacapo
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 2
#1

Изменение строк в текстовом файле - Delphi

28.12.2009, 09:03. Просмотров 9285. Ответов 3
Метки нет (Все метки)

Здравствуйте форумчане, появилась проблема.
Есть текстовый файл, нужно чтобы удалялись или в крайнем случае заменялись строки в этом файле.
Строки чтобы были вписаны в программу, т.е. пользователь открывает программу, нажимает на кнопку "удалить", и строки удалились в этом текстовом файле.
Помогите решить проблему, заранее спасибо. Все это на delphi 7.

P.S. Я только начинаю разбираться в дельфи, если не усложнит разжуйте все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2009, 09:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Изменение строк в текстовом файле (Delphi):

Поиск в текстовом файле и его изменение
Есть файл .тхт, примерно такой структуры: cost 200/комент weight ...

Удаление строк в текстовом файле
Нужна помощь есть текстовый файл размер 60Мб. в котором через каждое 256 строк...

Группировка строк в текстовом файле
Всем привет народ, подскажите плиз как сгруппировать строки в таком текстовом...

Число строк в текстовом файле
Описать функцию TextSize(Name) целого типа, возвращающую число строк в ...

замена нужных строк в текстовом файле
доброго времени суток =) проблема такая . в listbox из файла со множеством...

Написать функцию str(t), которая в заданном текстовом файле t подсчитывает количество непустых строк
Помогите пожалуйста. Надо: Написать функцию str(t), которая в заданном...

3
conn
114 / 113 / 22
Регистрация: 29.08.2009
Сообщений: 174
29.12.2009, 06:30 #2
Удалять строки непосредственно из текстового файла нельзя. Можно открыть текстовый файл паскалевски методом, построчно его считывать и записывать в новый файл только нужные строки. Еще можно использовать методы LoadFromFile и SaveToFile которые есть у каждого потомка класса TStrings, например у TMemo, TListBox, т.е. загрузить файл в Memo (Memo1.Lines.LoadFromFile('file,txt')), удалить нужные строки в Memo и записать содержимое в файл (можно в исходный заменив его) Memo1.Lines.SaveToFile('file,txt')
Вот примеры для паскалевского и потокового способов:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
procedure TForm1.Button1Click(Sender: TObject);
var
  f,f1:textfile; //файловая переменная
  del_str:string; //удаляемая строка
  str:string;  //временная переменная для считываемых строк
begin
  del_str:='some string';
  AssignFile(f,'c:\file.txt'); //инициализируем файловую переменную
  Reset(f); //открываем для чтения
  AssignFile(f1,'c:\file1.txt'); //инициализируем файловую переменную
  Rewrite(f1); //открываем для записи
  While not eof(f) do //задаем цикл до конца файла
    begin
      readln(f, str); //читаем строку из файла в переменную str
      if str<>del_str then //проверка условия
        writeln(f1,str); // запись строки во второй файл
    end;
  CloseFile(f);   //закрываем файлы
  CloseFile(f1);
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
var
  i:integer;     //счетчик цикла
  del_str:string; //удаляемая строка
begin
  del_str:='some string';
  Memo1.Lines.LoadFromFile('c:\file.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('c:\file1.txt');//запись содержимого Memo в файл
end;
Второй способ работает быстрее.
0
papacapo
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 2
03.01.2010, 11:03 #3
Что я не так сделал? Создал файл file.txt в корне диска C, в файл записал строки:
"some string
string"

Создал проект в дельфи, нажал кнопочку run, появилась визульная часть программы, нажимаю кнопку button1. И ничего не удалилось из файла file.txt

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  f,f1:textfile; //ГґГ*éëîâГ*Гї ïåðåìåГ*Г*Г*Гї
  del_str:string; //ГіГ¤Г*ëÿåìГ*Гї ñòðîêГ*
  str:string;  //âðåìåГ*Г*Г*Гї ïåðåìåГ*Г*Г*Гї äëÿ ñ÷èòûâГ*åìûõ ñòðîê
begin
  del_str:='some string';
  AssignFile(f,'c:\file.txt'); //ГЁГ*èöèГ*ëèçèðóåì ГґГ*éëîâóþ ïåðåìåГ*Г*ГіГѕ
  Reset(f); //îòêðûâГ*ГҐГ¬ äëÿ Г·ГІГҐГ*ГЁГї
  AssignFile(f1,'c:\file1.txt'); //ГЁГ*èöèГ*ëèçèðóåì ГґГ*éëîâóþ ïåðåìåГ*Г*ГіГѕ
  Rewrite(f1); //îòêðûâГ*ГҐГ¬ äëÿ Г§Г*ГЇГЁГ±ГЁ
  While not eof(f) do //Г§Г*Г¤Г*ГҐГ¬ öèêë äî ГЄГ®Г*Г¶Г* ГґГ*éëГ*
    begin
      readln(f, str); //Г·ГЁГІГ*ГҐГ¬ ñòðîêó ГЁГ§ ГґГ*éëГ* Гў ïåðåìåГ*Г*ГіГѕ str
      if str<>del_str then //ïðîâåðêГ* óñëîâèÿ
        writeln(f1,str); // Г§Г*ГЇГЁГ±Гј ñòðîêè ГўГ® âòîðîé ГґГ*éë
    end;
  CloseFile(f);   //Г§Г*êðûâГ*ГҐГ¬ ГґГ*éëû
  CloseFile(f1);
end;
 
 
 
end.
0
conn
114 / 113 / 22
Регистрация: 29.08.2009
Сообщений: 174
03.01.2010, 14:34 #4
из него и не должно ничего удаляться, читайте внимательно, во второй файл (file1.txt) копируется все строки кроме удаляемой, рядом с файлом file.txt в корне диска С появляется file1.txt в котором удалена строка "some string". Добавьте в конец процедуры, после CloseFile(f1);, следующее:
Delphi
1
2
DeleteFile('c:\file.txt');
  Renamefile('c:\file1.txt','c:\file.txt');
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2010, 14:34
Привет! Вот еще темы с решениями:

В текстовом файле подсчитать количество строк, оканчивающихся буквой "S"
В текстовом файле подсчитать количество строк, оканчивающихся буквой &quot;S&quot; ...

Поиск в текстовом файле
Подскажите пожалуйста, как сделать поиск слова в текстовом файле, а потом...

Поиск в текстовом файле
Здравствуйте! Подскажите, как мне осуществить поиск по файлу строк между двумя...

Поиск в текстовом файле
Имеется текстовый файл (файл.txt) Каждая строка (количество строк не известно)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru