Использование макросов внутри [COPY].

Тема в разделе "Функции и интерфейс программы", создана пользователем nicegrin, 6 сен 2017.

  1. nicegrin

    nicegrin New Member Пользователи

    Регистрация:
    18 авг 2017
    Сообщения:
    8
    Город:
    Орел
    Здравствуйте. Есть следующий шаблон вывода:
    [COPY:1|3][REPLACE(Ссылки недоступны для гостей
    На выходе имею:
    [RE
    Т.е. COPY работает только со строками внутри него. Макросы не допускаются?

    PS Извините, если ошибся разделом.
     
  2. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Добрый вечер!
    С макросом FIRST_REPLACE работает правильно

    [COPY:1|3][FIRST_REPLACE(Ссылки недоступны для гостей
     
    Root нравится это.
  3. nicegrin

    nicegrin New Member Пользователи

    Регистрация:
    18 авг 2017
    Сообщения:
    8
    Город:
    Орел
    Спасибо. Действительно работает. Очень оперативно!!!!
    Ни разу еще не пожалел , что приобрел CD!!! Спасибо!

    Скажите, в чем была ошибка, если была? Что нужно знать про данный макрос?
    Просто я еще пробовал примерно туже конструкцию, только предварительно отправлял текст в переменную, и уже потом пытался использовать COPY
    [VAR][SET:a][REPLACE(aaa|)]<CD_DOCPATH!>[/REPLACE][/SET][/VAR][COPY:1|3][VAR:a][/COPY]
    И наблюдался тот же эффект.
     
    Root нравится это.
  4. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Я далеко не все макросы знаю, и также далеко не весь функционал еще изучил, но главное не стесняться прикладывать голову))) посидеть поанализировать.
    макросы имеют свою последовательность выполнения. В данном случае макрос copy отработал раньше макросы replace, в логах можно проследить последовательность выполнения макросов.
    upload_2017-9-6_22-35-16.png
    а также многие макросы имеют свои дубли, с разницей лишь в последовательности срабатывания. Это и надо учитывать. Например, макрос replace имеет дубли:
    [FIRST_REPLACE(|)][/FIRST_REPLACE][BEFORE_IMG_REPLACE(|)][/BEFORE_IMG_REPLACE][REPLACE(|)][/REPLACE][FINAL_REPLACE(|)][/FINAL_REPLACE]
    нужно изучать в чем их отличие. Хелп по макросам есть. Еще пример: <TOPRICE*1></TOPRICE><TOPRICE2*1></TOPRICE2>. Таких примеров много
     
    Root нравится это.
  5. nicegrin

    nicegrin New Member Пользователи

    Регистрация:
    18 авг 2017
    Сообщения:
    8
    Город:
    Орел
    Спасиб. В сторону Лога не смотрел еще.
     
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Код:
    [VAR][SET:a][REPLACE(aaa|)]<CD_DOCPATH!>[/REPLACE][/SET][/VAR][COPY2:1|3][VAR:a][/COPY2]
    2017-09-07_10-33-59.png
     
  7. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Здравствуйте, Сергей!
    Возможно ли доработать макрос [COPY]?
    В справке написано, что можно использовать {LENGTH} в качесте начала копирования или длины копирования, а также применять к нему операции сложения и вычитания.
    Очень нехватает операции умножения и деления, с округлением до целого числа.
    Задача стоит такая, что необходимо из всего текста скопировать до половины всей его длины, либо от половины всей его длины до конца текста.
    Пробовал также в сочетании с макросами [CHARCOUNT], но он не срабатывает.

    Либо есть другое решение, но я его не нашел к сожалению.

    Заранее благодарен за ответ!
     
  8. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Стандартный SHORT макрос для заданного количества символов, подходит?
     
  9. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Не совсем, мне надо весь текст разделить на 2 части и занести в соседние ячейки.
    Вся сложность в том, чтобы вычислить середину (плюс минус 1-2 символа нестрашно) и это вычисленное число подставить в обрезающую функцию. Неважно будет это [COPY] или [SHORT].
     
  10. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.431
    Адрес:
    Latvia
    Теоретически это можно через MATH и COUNT
    1. COUNT подсчет символов статьи
    2. MATH поделить на 2 и положить цифру в VAR
    3. REPLACE макросом вставить маркер
    Код:
    re:^(.{[VAR:123]}).*?$|$1 - это для первой половины
    re:^.*?(.{[VAR:123]})$|$1 - это для второй половины в следующей ячейке
    п.с. подберите макросы чтоб работали в порядке очереди
     
    aresa нравится это.
  11. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Count использовал.
    Math почему-то мне не давал результат деления, но может просто я не доковырял.
    Тоже уже начал задумываться про Var.

    Спасибо за помощь! буду пробовать.
     
  12. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 100 постов.**
    Используйте [COPY:{HALF1}]ААCCC[/COPY] для получения первой половины текста, а [COPY:{HALF2}]ААCCC[/COPY] - для получения второй.
     
    kagorec и aresa нравится это.
  13. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Добрый вечер!
    Протестил, макрос [COPY] отлично работает, а [COPY2] похоже нет.
     
  14. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 100 постов.**
     
  15. aresa

    aresa Well-Known Member Пользователи

    Регистрация:
    17 окт 2015
    Сообщения:
    180
    Супер! Оба макроса работают отлично.
    Спасибо огромное!
     
    Root нравится это.
Similar Threads
  1. Michel_S_1958
    Ответов:
    3
    Просмотров:
    1.158
  2. aresa
    Ответов:
    3
    Просмотров:
    828
  3. nicegrin
    Ответов:
    4
    Просмотров:
    533
  4. kotr
    Ответов:
    4
    Просмотров:
    490
  5. PeterPen
    Ответов:
    1
    Просмотров:
    397
Загрузка...

Поделиться этой страницей