суббота, 31 декабря 2016 г.

Релиз r49-20161231



Версии компонентов:
  • libtoxic v7.5.4
  • cr49 v1.3.0
  • Qr49 v3.12.6
Изменения:
  1. libtoxic: устранена ошибка, приводящая к появлению мусора в отчете ReportGAS_OST_37.001.234-81 при некоторых сочетаниях исходных данных;
  2. Qr49: некоторые внутренние улучшения;
  3. Общее: сборка под Windows выполнена с использованием Qt версии 5.7.1.

Релиз reup-1.11.0


Да, вот так после 1.7.0 сразу 1.11.0. На самом деле скачка не было, просто промежуточные версии не публиковались. Из изменений в 1.11.0: обеспечена работа с файлами edc, оптимизированы правила генерации makefile, незначительные внутренние улучшения.

четверг, 29 декабря 2016 г.

Emacs Lisp. Конвертирование массива ASCII в текст и обратно

По работе мне достаточно часто приходится работать с текстовыми файлами, содержащими строки в виде массивов ASCII, где значения отдельных символов разделены точкой с запятой. Что-то типа "118;50;48;49;54;49;50;50;57". Разумеется, хотелось бы увидеть эту информацию в более комфортном для человека виде, как то "v20161229", откорректировать и преобразовать обратно в массив ASCII. Так как с текстом я почти всегда работаю в emacs, то самым логичным решением было бы написать пару функций на emacs lisp. Тем более, что пользоваться какими-то приложениями, таская текст из редактора в буфер, потом в специальный конвертер, потом опять в буфер и, наконец, обратно в редактор, ну вообще не вариант.
Код функций получился вот таким.
(defun pa23-ascii2text (start end)
  "Convert ASCII codes to text."
  (interactive "r")
  (let ((text))
    (progn
      (setq line  (buffer-substring-no-properties start end))
      (setq ascii (split-string line ";"))
      (mapc
       (lambda (code)
         (push (string-to-number code) text)
         )
       ascii )
      )
    (delete-region start end)
    (insert (apply 'string (reverse text)))
    )
  )

(defun pa23-text2ascii (start end)
  "Convert text to ASCII codes."
  (interactive "r")
  (let ((temp) (ascii))
    (progn
      (setq temp (string-to-list (buffer-substring-no-properties start end)))
      (mapc
       (lambda (code)
         (setq ascii (concat ascii (number-to-string code) ";"))
         )
       temp )
      )
    (delete-region start end)
    (insert (substring ascii 0 -1))
    )
  )
Работа с функциями выглядит следующим образом: выделяем нужный текст, вызываем соответствующую функцию, выделенный текст будет заменен выхлопом функции.