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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2010, 16:16   #1
Jantar
Пользователь
 
Аватар для Jantar
 
Регистрация: 19.02.2009
Сообщений: 63
По умолчанию Поиск и замена текста

Здравствуйте, уважаемые профессионалы. У меня вопрос на изъезжанную тему: поиск и замена текста в файле

Есть текстовый файл из 1000 строк. Там надо заменить слово "S1000" на "S1200", "Z100. на Z0." , то есть многострочная замена.

Скажите пожалуйста, через что лучше и удобнее сделать такое? Искал по форуму, но конкретное что-то не нашел (извините, если я слепым был). И тем более, хочу сам на примерах и с вашей помощью научится данной процедуре. Заранее спасибо за помощь
Jantar вне форума Ответить с цитированием
Старый 20.07.2010, 16:51   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Ну вот смотрите
кидаете на форму RichEdit из вкладки Win32
и по нажатию кнопки пишете
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
FLAGS:Treplaceflags;
begin
RichEdit1.Lines.LoadFromFile('c:\текстовы файл.txt');
RichEdit1.Text:=StringReplace(RichEdit1.Text,'S1000'','S1200',FLAGS);
RichEdit1.Lines.SaveToFile('c:\текстовы файл.txt');
end;
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 20.07.2010, 16:53   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Там надо заменить слово "S1000" на "S1200"
именно слово? А что в Вашем понимании слово?
в тексте (к примеру) AS10009 надо текст менять или нет?
если надо менять везде, то это проще паренной репы (например, в проекте JEDI в JclStrings) функция
StrReplace
Цитата:
replaces one or all occurrences of the specified search pattern with the supplied replace string.
procedure StrReplace(var S: AnsiString; const Search: AnsiString; const Replace: AnsiString; Flags: TReplaceFlags = []);
только она не умеет выделять слова... но это можно дописать...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.07.2010, 17:20   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Serge_Bliznykov
Зачем ставить какой-то Джейди, если есть стандартная StringReplace?
Код:
var s:tstringlist;
begin
 s:=tstringlist.create;
 s.LoadFromFile('файл');
 s.text:=StringReplace(s.Text,' S1000',' S1200',[rfreplaceall]);
 s.SaveToFile('файл');
end.
Здесь учитывается что "слово" начинается с пробела.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.07.2010, 17:27   #5
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
var s:tstringlist;
begin
 s:=tstringlist.create;
 s.LoadFromFile('файл');
 s.text:=StringReplace(s.Text,' S1000',' S1200',[rfreplaceall]);
 s.SaveToFile('файл');
end.
после
Код:
 s.SaveToFile('файл');
 FreeAndNil(s);//а то утечки памяти будут
From Stilet: Поправка принята, хотя я больше люблю способ s:=nil;
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Stilet; 22.07.2010 в 11:00.
Sanprof вне форума Ответить с цитированием
Старый 22.07.2010, 09:14   #6
Jantar
Пользователь
 
Аватар для Jantar
 
Регистрация: 19.02.2009
Сообщений: 63
По умолчанию

Ой, сколько ответов Спасибо. А если у меня через OpenDialog открывается и сохраняется файл в Memo? Как лучше считать и заменить файл при открытии?


Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 FileName: File;

 begin
     with OpenDialog1 do
      if Execute then
        begin
         Memo1.Lines.LoadFromFile(FileName);   // открываю файл в memo
        end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.SaveToFile(OpenDialog1.FileName); // сохраняю туда же
end;
end.

Последний раз редактировалось Jantar; 22.07.2010 в 09:18.
Jantar вне форума Ответить с цитированием
Старый 22.07.2010, 11:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А если у меня через OpenDialog открывается и сохраняется файл в Memo?
Ну дык
Код:
Memo1.Lines.Text:=StringReplace(s.Text,' S1000',' S1200',[rfreplaceall]);
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2010, 11:25   #8
Jantar
Пользователь
 
Аватар для Jantar
 
Регистрация: 19.02.2009
Сообщений: 63
По умолчанию

Я пробовал так. Пишет, что неизвестная переменная s
Jantar вне форума Ответить с цитированием
Старый 22.07.2010, 11:41   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Отгоре, а подумать? А Смекалку включить?
Ладно я в спешке живу, но ты то...
Memo1.Lines.Text:=StringReplace(Memo1.Lines.Text,' S1000',' S1200',[rfreplaceall]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2010, 12:00   #10
Jantar
Пользователь
 
Аватар для Jantar
 
Регистрация: 19.02.2009
Сообщений: 63
По умолчанию

3 работы, скоро свадьба и ремонт в квартире - это я не в спешке живу? Спасибо
Jantar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема поиск и замена текста(Delphi) KirkMETAL Помощь студентам 4 26.07.2010 08:41
Поиск и замена текста для Отдела кадров Viento Microsoft Office Excel 2 24.07.2009 10:08
Поиск поля для ввода текста и его замена ZeroCrash Общие вопросы Delphi 2 21.04.2009 17:22
Поиск и замена текста в файле VAbramyak Общие вопросы Delphi 3 04.04.2007 20:20
поиск и замена текста в RichEdit Vasya Помощь студентам 11 16.03.2007 06:48