Как проанализировать основное имя файла с помощью Сценария-Fu

Вы были правы в своей интерпретации. Вот другой способ посмотреть на него:

const MyStructure *      *ppMyStruct;        // ptr --> ptr --> const MyStructure
      MyStructure *const *ppMyStruct;        // ptr --> const ptr --> MyStructure
      MyStructure *      *const ppMyStruct;  // const ptr --> ptr --> MyStructure

Это все альтернативы для от указателя к указателю с одним спецификатором константы. Справа налево правило может использоваться для дешифровки объявлений (по крайней мере, в C++; я не эксперт C).

8
задан Nietzche-jou 30 September 2009 в 09:56
поделиться

2 ответа

Контекст

GIMP 2.6.6 Windows Vista SP2

Цель

Извлечь базовое имя исходного имени файла без его расширения.

Признак

Ошибка: eval: несвязанная переменная: re-match-nth

Возможное предложение

Меню GIMP " Фильтры "> " Script-Fu "> " Консоль "

В поле ввода вставьте следующее определение функции Script-Fu. затем нажмите кнопку ENTER :

(define (filename-basename orig-name)
    (car (strbreakup orig-name "."))
    ; Nimmzo 09/09/30: the string split function strbreakup is defined 
    ; in the compatibility file from SIOD to TinyScheme:
    ; C:\Program Files\GIMP\share\gimp\2.0\scripts\script-fu-compat.init
) ; end  filename-basename

Чтобы проверить функцию, введите:

(filename-basename "screen.xcf")

Консоль Script-Fu отвечает:

"screen"
5
ответ дан 5 December 2019 в 07:35
поделиться

Не совсем правильное решение:

> (filename-basename "this.is.a.long.filename.jpg")

"this"

Лучшая реализация:

(define (morph-filename orig-name new-extension)
 (let* ((buffer (vector "" "" "")))
  (if (re-match "^(.*)[.]([^.]+)$" orig-name buffer)
   (string-append (substring orig-name 0 (car (vector-ref buffer 2))) new-extension)
  )
 )
)
8
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: