Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами, Замена одного слова другим 
:(
    Опции темы
Полудненко Олег
Дата 6.1.2004, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



Как в файле можно найти все заданые слово (а точнее одно) и заменить его на другое? (Имеется в виду есть ли какая-нить стандартная фун-ция).
PM MAIL   Вверх
NiJazz
Дата 6.1.2004, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Считываешь файл, заменяешь слово, потом переписываешь файл с новым словом.
PM MAIL   Вверх
Vex
Дата 6.1.2004, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
(Имеется в виду есть ли какая-нить стандартная фун-ция).


Насколько я знаю, тако


--------------------
Слава Україні.
PM   Вверх
NiJazz
Дата 6.1.2004, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Цитата
Насколько я знаю, тако

нет такой функции. smile.gif
PM MAIL   Вверх
Полудненко Олег
Дата 6.1.2004, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



Vex а поточнее
PM MAIL   Вверх
Vex
Дата 6.1.2004, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
Vex а поточнее


Я хотел дописать "такой функции нет", но случайно нажал ентер smile.gif

ИМХО, вариант NiJazzа оптимальный, можно еще побайтово считывать, если первый байт совпадает с первым байтом эталона, то запомнить позицию, проверять дальше, при каждом следующей проверке, если предидущая прошла успешно инкрементировать счетчик, если достигнут последний символ эталона удалить с позиции, которую ты запомнил i-тое количество байт, затем записать слово, которое требуется для замены с сответствующей позиции smile.gif

Во блин загнул biggrin.gif


--------------------
Слава Україні.
PM   Вверх
<Spawn>
Дата 6.1.2004, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Загружаешь файл в TStringList и делаешь StringReplace.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Fedor
Дата 6.1.2004, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Ну в принципе, можно прочитать файл как одну БООЛЬШУЮ строку. И воспользоваться после этого каким-нибудь из классических алгоритмов. Например, LCS.
Этот способ будет достаточно быстрым.
Хотя врядли такой алгоритм применим для больших фалйов, а для маленьиких эта скорость не будет иметь большого значения. ИМХО


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
<Spawn>
Дата 6.1.2004, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Вот примерчик на StringReplace:

Код
procedure TForm1.Button1Click(Sender: TObject);
var
 StrList : TStringList;
begin
 StrList := TStringList.Create;
 try
   StrList.LoadFromFile('test.txt');
   Memo1.Lines.Assign(StrList);
   StrList.Text := StringReplace(StrList.Text, '123', '789', [rfReplaceAll]);
   Memo2.Lines.Assign(StrList);
 finally
   FreeAndNil(StrList);
 end;
end;


Это сообщение отредактировал(а) <Spawn> - 6.1.2004, 21:27


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Полудненко Олег
Дата 6.1.2004, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



<Spawn> СПАСИБО, СПАСИБО, ща протестим...

Ну и всем походу тоже спасибоsmile.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.