Показать сообщение отдельно
Старый 25.12.2006, 20:24
  #235
Рассказчик
 
Аватар для Dragoon


Медаль: Медаль за актуальные и востребованные темы и сообщения. - причина: за востребованные программы 
Наград: 1 (все ...)
Выпустил новую версию. Основная фишка - добавление пробного скриптового движка. Пока он в процессе написания, но уже дал мне возможность сохранять ссылки в произвольном формате. Возможно, многим не понравилось, в каком формате программа сохраняет ссылки (их было 3 на выбор, о них написано в одном из логов изменений). Теперь появился новый - Custom. Для сохранения ссылки в этом формате вам потребуется ввести строку на скриптовом языке программы, перед сохранением она выполнится и результат будет записан в файл (или скопирован в буфер обмена).
Как этим пользоваться :
К примеру, я хочу, чтобы программа сохраняла ссылки в таком формате
[UR1=FileURL]FileName[/URL]
Для этого необходимо ввести строку
Цитата:
Concat('[UR1=%FileURL%]%FileName%[/URL]')
Но естественно, это неинтересно :-) Такое можно было бы и не называть движком....
А теперь представим более сложный случай (клинический...). Я хочу, чтобы формат был такой
Для многотомных архивов:
номер_архива:[UR1=ссылка]ссылка[/URL] [имя_файла] //комментарий
Для однотомных
[UR1=ссылка]ссылка[/URL] [имя_файла] //комментарий
Строка скрипта будет уже посложнее, но все равно, разобраться можно. Смотрим:
Цитата:
Concat(IfThenElse(Rar_IsMultipart('%FileName%'),Concat(Rar_ExtractNumberOfPart('%FileName%'),':'),''),'[UR1="%FileURL%"]%FileURL%[/UR1] [[В]%FileName%[/B]] //%FileComment%')
Теперь разбираем по частям. Если проговаривать эту строчку словами, то получится что-то вроде "Если архив многотомный, то мы дописываем перед началом строки его номер с : в конце, затем мы записываем ссылку в формате BBCode и приписываем в том же формате имя файла с комментариями". После вставки данной строки в сообщение получится нечто подобное:
123:http://avangard.data.cod.ru/0123456789 [Example.part123.rar] //Test file comment
Подобные скриптовые ссылки позволят каждому подобрать под себя формат сохранения... Который еще и автоматически будет вычисляться программой -)
Далее следует перечень функций интерпретатора и список доступных для использования переменных.
Цитата:
Переменные [в скрипте не забывайте дописывать % перед и после имени переменной]:
ПЕРЕМЕННЫЕ РЕГИСТРОЗАВИСИМЫЕ [FilePath <> Filepath <> filePath <> filepath]
FilePath - содержит полный путь к файлу ['D:\Dir1\Dir2\Dir 3\Example.part123.rar']
FileName - имя файла ['Example.part123.rar']
FileSize - размер файла, уже конвертированный программой в удобоваримый вид
FileID - ID файла на сервере ['0123456789']
FileURL - полная ссылка на файл ['http://avangard.data.cod.ru/0123456789']
FileTimeElapsed - время за которое закачался файл ['00:30:32']
FileOCRCErrors - сколько произошло ошибок определения кода ['1']
FileErrors - сколько произошло ошибок при загрузке ['12']
FileAverageSpeed - средняя скорость загрузки файла, в удобоваримом виде ['32 кб']
FileComment - комментарий к файлу ['Test file comment']
FilePassword - пароль на файл ['Test password']
CR - символ перевода каретки (0x0D)
NL - символ новой строки (0x0A)
Функции
ФУНКЦИИ РЕГИСТРОНЕЗАВИСИМЫЕ [Concat = cONcat = CoNcAt]
Concat(произвольное число параметров) - склеивает переданные строки
[Concat('12','+','13','=','25') = '12+13=25']
[Concat(Concat(Concat('0','12','34'),'56' ),'78','9') = '0123456789']

Trim(один параметр) - обрезает ведущие и заключающие пробелы
[Trim(' 123') = '123']
[Trim(' 123 ') = '123']

ExtractFileName(один параметр) - выкусывает имя файла из полного пути
[ExtractFileName('D:\Dir1\Dir2\Dir 3\Example.part123.rar') = 'Example.part123.rar']

ExtractFilePath(один параметр) - аналогично, только выкусывает путь до файла

Copy(три параметра) - возвращает кусок строки. Первый параметр это строка, из которой выполнять копирование, второй - номер символа, с которого начинать копировать, третий - количество копируемых символов
[Copy('01234567',2,4) = '1234']

Pos(два параметра) - возвращает индекс подстроки в строке, либо 0, если подстрока не встречается. Первый параметр - искомая подстрока, второй - строка, в которой производить поиск
[Pos('5','012345678') = '6']

IfThenElse(три параметра) - подставляет(и выполняет) второй параметр, если первый '1'(или любое другое число, отличное от '0') и выполняет второй параметр, если первый равен '0'
[IfThenElse('1','True','False') = 'True']
[IfThenElse('0','',Concat('123',Pos('3',' 01234'),'56789')) = '123456789']
[IfThenElse(Rar_IsMultipart('blah.part1.r ar'),'Is multipart','FAAAAAALSE') = 'Is multipart']

Rar_IsMultipart(один параметр) - возвращает '1' в случае, если переданный параметр содержит подстроки '.part' и '.rar' в имени файла
[Rar_IsMultipart('blah.part1.rar') = '1']
[Rar_IsMultipart('blah.par_t1.rar') = '0']

Rar_ExtractNumberOfPart(один параметр) - возвращает номер архива, который вписывает архиватор между '.part' и '.rar'
[Rar_ExtractNumberOfPart('blah.part1123.r ar') = '1123']

Dragoon добавил 25.12.2006 в 20:28
ВНИМАНИЕ ! Во избежание интерпретации тэга ссылки, в аббревиатуре URL буква L заменена на 1

Комментарии к сообщению (репутация)
DenchikK , положительно: +

Последний раз редактировалось Dragoon; 26.03.2007 в 07:18.. Причина: Добавлено сообщение
Dragoon вне форума  
Эти 9 пользователей(ля) поблагодарили Dragoon за это Полезное сообщение:
alex170390 (25.12.2006), Bad Cat (26.03.2007), Ded-Moroz (17.03.2007), DenchikK (02.06.2007), eeerrr (09.06.2007), Konstantin (25.12.2006), reality (29.04.2007), Wreack (26.12.2006), XyceuH (05.06.2007)