Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Регулярки и замена в .rtf  (Прочитано 6826 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« : 05-08-2009 07:01 » 

Ребят, сильно не пинайте. Сам я делфи не знаю, но попросили узнать решение проблемы.

Дано:
шаблон .rtf где нахходится таблица примерно след.вида:
%str% | %name%
%str% | %name%
...

(упрощено, но суть ясна думаю).

Затем в самой делфе-программе есть цикл, который перебирает все строки из БД, кот.нужно вставить в таблицу.
Но если использовать функцию replacestring (вроде такая - замена по регуляркам), то в таблице в .rtf получается одна повторяющася строка.

Может как-то можно сделать чтобы регулярка меняла совпадение только 1 раз а потом был след.проход цикла и регулярка меняла уже 2 строку.
Или как-то по-другому решить задачу...

Прошу прощения за пост вопроса, не зная матчасти. Спасибо заранее.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 05-08-2009 14:41 » 

ReplaceString работает не по регулярным выражениям. но - работает. если в БД в итоге выдаётся одинаковая строка - то это скорее всего следствие кривости кода. не видя исходников - сложно что-то сказать.

если же необходима замена именно по правилам регекспов, то лучше юзать TRegExpr: http://regexpstudio.com/RU/TRegExpr/TRegExpr.html

Цитата
Распространяется в исходных текстах, полностью на Object Pascal (совместим с Delphi, C++ Builder, Kylix и FreePascal), не нужны никакие DLL.
Записан

Razor
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 06-08-2009 15:09 » 

Да нет, из БД строки выдаются какраз разные, но получается так, что все строки в .rtf заменены одними данными (самым первым выводом) т.е. stringReplace за один раз сразу все меняет, а хотелось бы чтоб только первые совпадения..вот
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 10-08-2009 11:49 » 

у StringReplace есть флаг - rfReplaceAll. если он не используется, то меняется только первое вхождение в строку.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines