|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2007, 19:14 | #1 |
Пользователь
Регистрация: 07.10.2007
Сообщений: 15
|
Работа с Текстовыми файлами
Хай народ!Подскажите пожалуйста как можно через делфи найти и изменить в текстовом файле определенную строку.Например в файле c:\test.pkt есть строка <NUMBER>123456</NUMBER> как можно изменить номер 123456??
|
28.10.2007, 19:51 | #2 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
procedure TForm1.Button1Click(Sender: TObject);
var st: TStringList; i: integer; tmpSt: string; begin st := TStringList.Create; try st.LoadFromFile('c:\test.pkt'); for i := 0 to st.count - 1 do begin tmpSt := st[i]; if tmpSt = '<NUMBER>123456</NUMBER>' then begin tmpSt := '<NUMBER>654321</NUMBER>' ; break; end; end; st.SaveToFile('c:\test.pkt'); finally FreeAndNil(st); end; end; Ну, примерно так можно (один из десятка способов).
Не надо ничего усложнять. Все достаточно тривиально.
|
29.10.2007, 04:17 | #3 |
Пользователь
Регистрация: 07.10.2007
Сообщений: 15
|
А можно сделать тоже самое только по маске?Например для всех *.txt файлов на жиске C:\
|
29.10.2007, 08:05 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Задавай там маску, и они найдут тебе все файлы с этой маской. По нахождению открывай каждый и меняй че нуна. Вот дя раздумий: unit Unit1; interface uses shellapi, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; function findA(p:string; var slist:TStringList):variant; var i:integer; Form1: TForm1; implementation {$R *.dfm} //********** FUNCTION ********** function findA; var s:TSearchRec; lp,ep,ss:string;k:integer; begin ep:='c:\temp\*.txt'; if FindFirst(ep,faAnyFile, s)=0 then begin repeat if (s.Name <>'.')and(s.Name <>'..') then begin lp:='';k:=0; while k<=i*4 do begin lp:=lp+' ';inc(k);end; if s.Attr=faDirectory then slist.Append(lp+'['+s.Name+']') else begin \\ А тут мы заколбасиваем найденый по маске файл end; if s.Attr=faDirectory then begin inc(i); findA(ExtractFilePath(p)+s.Name+'\' +ExtractFileName(p), slist); dec(i); end; end; until FindNext(s)<>0 end; end; //********** END FUNCTION ****** {} procedure TForm1.FormCreate(Sender: TObject); var ts:TStringList; begin ts:=TStringList.Create; finda('c:\temp\*.*',ts); ListBox1.Items:=ts; end; end. (P.S. пример с ходя так что баги вероятны...) (P.P.S пример найдет и файлы в поддиректориях, это рекурсия)
I'm learning to live...
|
|
29.10.2007, 08:16 | #5 |
Форумчанин
Регистрация: 15.10.2007
Сообщений: 147
|
Дополнение к Шуракену:
Код:
Код:
|
29.10.2007, 11:17 | #6 |
Пользователь
Регистрация: 07.10.2007
Сообщений: 15
|
Все работает!Огромное спасибо!!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с текстовыми файлами (Delphi) | Omedus | Помощь студентам | 6 | 18.12.2012 00:31 |
Помогите по работе с текстовыми файлами | ЕвгениуS | Помощь студентам | 9 | 17.01.2010 15:10 |
Pascal работа с текстовыми файлами | Andrey89 | Помощь студентам | 3 | 25.12.2007 19:21 |
Работа с текстовыми файлами | DartMrakkk | Общие вопросы Delphi | 3 | 14.07.2007 16:52 |
Задача с текстовыми файлами | SpeedMaster | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 02.04.2007 15:43 |