Scripts discussion (2)
- Author
- Message
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Question:
how to get RichOffset from ByteOffset and vice versa?
For example we have the string:
a\r\r\nb\nc\r\nd\r
(\r - carriage return 0x0D,
\n - line feed 0x0A).
This string is displayed as follows:
If ByteOffset is 8, what is the value of RichOffset?
how to get RichOffset from ByteOffset and vice versa?
For example we have the string:
a\r\r\nb\nc\r\nd\r
(\r - carriage return 0x0D,
\n - line feed 0x0A).
This string is displayed as follows:
Code: Select all
a
b
c
d
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Обновил RunMe.js.
Что нового:
- расширения файлов сравниваются регистро-независимо;
- добавлен Python и Free Pascal (предполагается, что при установке они зарегистрировались в системе - иначе в файле RunMe.js нужно указать к ним полный путь);
- добавлен внешний вызов Call("Scripts::Main", 1, "RunMe.js", "1"), позволяющий изменить строку запуска - например, добавить какие-то параметры. Изменённая строка запуска сохраняется для последующего использования.
Вот такие вот пироги с котятами
Что нового:
- расширения файлов сравниваются регистро-независимо;
- добавлен Python и Free Pascal (предполагается, что при установке они зарегистрировались в системе - иначе в файле RunMe.js нужно указать к ним полный путь);
- добавлен внешний вызов Call("Scripts::Main", 1, "RunMe.js", "1"), позволяющий изменить строку запуска - например, добавить какие-то параметры. Изменённая строка запуска сохраняется для последующего использования.
Вот такие вот пироги с котятами
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
DV
Вопрос по Вашему скрипту.
Лучше бы сделать задание параметров в обычном ini-файле:а уже внутри скрипта считывать их в oCommands, чтобы пользователи не переколбашивали скрипт или не делали себе копий...
А так параметры ini-файла по опыту пользователей постепенно бы добавлялись (можно вести его там же, рядом со скриптом, чтобы каждый мог выбрать те строки, что ему подходят).
Вопрос по Вашему скрипту.
Лучше бы сделать задание параметров в обычном ini-файле:
Code: Select all
ext=parameters
А так параметры ini-файла по опыту пользователей постепенно бы добавлялись (можно вести его там же, рядом со скриптом, чтобы каждый мог выбрать те строки, что ему подходят).
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
В oCommands задаются не только пары "расширение" : "команда", но и пары "расширение" : ":внутренняя_функция", для которых пишется реализация внутренней функции. Как пример, немаленькая функция run_cpp(filePathName). Сейчас это всё находится в одном файле RunMe.js. Выносить эти вещи в отдельный файл, который затем ещё надо как-то обработать? Не уверен.
P.S.
Благодаря этому вопросу заметил, что сейчас (пока) нет возможности передавать аргументы в тот же run_cpp(). Похоже, надо будет показывать окно запроса командной строки непосредственно перед запуском команды на исполнение, а не для строки из oCommands непосредственно.
P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:
Наличие "&&" между cmd1 и cmd2 - т.е. между компиляцией и запуском файла - предполагает, что в случае ошибки компиляции fpc возвратит код ошибки и следующая часть команды (cmd2) не будет вызвана.
P.S.
Благодаря этому вопросу заметил, что сейчас (пока) нет возможности передавать аргументы в тот же run_cpp(). Похоже, надо будет показывать окно запроса командной строки непосредственно перед запуском команды на исполнение, а не для строки из oCommands непосредственно.
P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:
Code: Select all
var cmd1 = "fpc.exe \"%f\""; // compile
var cmd2 = "cd \"%d\" && \"%n.exe\""; // current dir = file dir && run .exe
var cmd = "cmd /c" + cmd1 + " && " + cmd2;
cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc.
runCommand(cmd); // run
Last edited by DV on Thu Nov 29, 2012 12:40 pm, edited 1 time in total.
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Просто хотел как бы поудобнее. Карячить скрипт, по моему, плохая идея. Тогда уж ограничить задачи скрипта компиляцией (у Infocatcher'а есть прекрасный скрипт для запуска обычных прог), и для каждого колбасить отдельные файлы. Можно даже в тех же ini задавать частоиспользуемые списки параметров и выводить их в диалоге либо меню для выбора. А используемый тэг-компитятор-ini-файл задавать в параметрах запуска скрипта. Это было бы удобно.
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
FindFiles.js
Bugs fixed:
- detection of binary files,
- selection of text in a file opened by double click.
Bugs fixed:
- detection of binary files,
- selection of text in a file opened by double click.
-
Offline
- Posts: 366
- Joined: Mon Jan 10, 2011 5:28 pm
- Contact:
Хотелось бы скрипт, вставляющий дату в формате RFC822 (только с четырёхциферной записью года). Может быть модификацию стандартного InsertDate или unixTime.
Пока обхожусь insertDateTemplateExample с такими настройками (в итоге часовой пояс прописан жестко вручную):
А может уже есть на просторах форума готовенькое, а я не нашёл?
Пока обхожусь insertDateTemplateExample с такими настройками (в итоге часовой пояс прописан жестко вручную):
Code: Select all
-"RFC822 подобие" Call("Scripts::Main", 1, "insertDateTemplateExample.js", `/t=<day>,\s<date>\s<monthName>\s<fullYear>\s<hours>:<minutes>:<seconds>\s+0400 /w=Sun,Mon,Tue,Wed,Thu,Fri,Sat /m=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec`, "", 0)
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
FindFiles.js
Added: ability to limit the size of files to search.
Added: ability to limit the size of files to search.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Как-то так:Lenchik wrote:Хотелось бы скрипт, вставляющий дату в формате RFC822 (только с четырёхциферной записью года).
insertDateTemplateExample.js
Add <timezone> placeholder
И заодно:
unixTime.js
Correctly show timezones with minutes
-
Offline
- Posts: 20
- Joined: Wed Mar 07, 2012 10:27 am
Попробовал.DV wrote: P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:.Code: Select all
var cmd1 = "fpc.exe "%f""; // compile var cmd2 = "cd "%d" && "%n.exe""; // current dir = file dir && run .exe var cmd = "cmd /c" + cmd1 + " && " + cmd2; cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc. runCommand(cmd); // run
1) Если паскалевский файл в корне диска, то получаем следующее сообщение - ""cels1e.exe"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
2) Если паскалевском файле есть операторы ввода данных с клавиатуры, то он компилируется и зависает в процессах без вывода чего либо на экран.
-
Offline
- Posts: 20
- Joined: Wed Mar 07, 2012 10:27 am
Попробовал.DV wrote: P.P.S.
Ответ по поводу Паскаля. Реализация мне представляется похожей на используемую в run_cpp() - конкретнее см. переменные cmd1 и cmd2.
В случае Паскаля это будет выглядеть предположительно так:.Code: Select all
var cmd1 = "fpc.exe "%f""; // compile var cmd2 = "cd "%d" && "%n.exe""; // current dir = file dir && run .exe var cmd = "cmd /c" + cmd1 + " && " + cmd2; cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc. runCommand(cmd); // run
1) Если паскалевский файл в корне диска, то получаем следующее сообщение - ""cels1e.exe"" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
2) Если паскалевском файле есть операторы ввода данных с клавиатуры, то он компилируется и зависает в процессах без вывода чего либо на экран.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
-
Offline
- Posts: 20
- Joined: Wed Mar 07, 2012 10:27 am
Так как скрипты никогда не писал, то именно фантазия и интуиция меня и направляетDV wrote:booleg,
В качестве cmd2 (внутри function run_pas(filePathName)) можно попробовать
"rundll32.exe shell32,ShellExec_RunDLL "%d\%n.%e"". Не бойтесь проявлять фантазию
Такой вариант я пробовал раньше. Компилировал отдельно, а запускал так:
Code: Select all
"pas PAS Pas" :
":run_Pasfile("%d\\%n.exe")" ,
Code: Select all
function run_Pasfile(filePathName)
{
var cmd = "rundll32.exe shell32,ShellExec_RunDLL "" + filePathName + """;
runCommand(cmd, "", 0); // do not capture output
}
Предполагаю, что Win7 "rundll32.exe shell32,ShellExec_RunDLL" не нравиться.