![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток! Скажите, а возможно ли реализовать замену участков текста для нескольких файлов одновременно ?
|
|
#2
|
||||
|
||||
|
Можно, в цикле.
Это похоже на замену текста в сохранённых HTML-страницах. Если так, то таких программ достаточно в сети. |
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Встречал такие, которые написаны на .NET. Как понимаешь глянуть исходный код такой программы дело техники.
|
|
#5
|
|||
|
|||
|
|
|
#6
|
|||
|
|||
|
Два едита и кнопку на форму.
По нажатии на кнопку в цикле ищешь текст в файле введенный в первом едите и заменяешь на тот что во втором, тоже самое со вторым файлом. Для этого нужно будет знать такие слова как: pos, copy, delete, TStringList. upd: Цикл не нужен, во я на вечер туплю) Последний раз редактировалось m1sclick, 10.03.2012 в 23:54. |
|
#7
|
||||
|
||||
|
Создай 2 потока, к примеру TMemoryStream, в первый грузишь оригинальный текст, во-второй готовый. Ищешь первое вхождение искомой замены, нашёл - копируешь во-второй от начала потока до вхождения. Ищешь конец искомой замены и, если больше искать нечего копируешь во-второй поток от второго вхождения до конца, иначе повторяешь всё по-новой.
|
|
#8
|
||||
|
||||
|
А про StringReplace все забыли?
Код:
procedure ChangeText(InFilename, OutFilename, ChtoIschem, NaChtoMenyaem: string);
var
txt: TStrings;
begin
txt:= TStringList.Create;
try
txt.LoadFromFile(InFilename);
txt.Text:= StringReplace(txt.Text, ChtoIschem, NaChtoMenyaem, [rfReplaceAll]);
txt.SaveToFile(OutFilename);
finally
txt.Free;
end;
end; |
|
#9
|
||||
|
||||
|
StringReplace может не подойти. Бывают ситуации, и довольно часто, когда точно знаешь начало и конец искомого и это растягивается на несколько строк, а середина может меняться.
|