Ru-Board.club
← Вернуться в раздел «Программы»

» Multi-Edit 8.x, 9.x, ... , Multi-Edit 2006, 2008

Автор: BVV63
Дата сообщения: 28.08.2015 06:51
Покуда Вы отвечали, я ещё в предыдущем посте кое-что добавил.


Цитата:
А <Del>-то здесь причём?

Проверка строки на наличие табуляций.

Добавлено:
Кстати, при попытке выполнить макрос посредством "Macro" -> "Run" выводится ошибка:

Цитата:
Macro or Macro file "Multi.mac" NOT Found in C:\Program Files\Multi-Edit 2008\ nor C:\Program Files\Multi-Edit 2008\MAC\
Автор: NvvLazyTiger
Дата сообщения: 28.08.2015 06:56
Ну и???
Я вопросы задал. Ответов не вижу...
И?...

Ну Дык! поместить туда нужное,
а потом разобраться с путями и проч...
Автор: BVV63
Дата сообщения: 28.08.2015 06:58
NvvLazyTiger
Да вроде как на все вопросы ответил.
Автор: NvvLazyTiger
Дата сообщения: 28.08.2015 07:06

Цитата:
Да вроде как на все вопросы ответил.
Ага... За некоей мелочью...
Вас УСТРАИВАЕТ предложенный макрос или где?
Автор: BVV63
Дата сообщения: 28.08.2015 07:10
NvvLazyTiger

Цитата:
Вас УСТРАИВАЕТ предложенный макрос или где?

Ну поскольку он не работает, то очевидно нет.

Переустановил ещё раз ME (вспомнил, что переустанавливал ранее без предварительного удаления старой копии, т. е. поверх), вначале удалив его старую инстанцию. Сейчас компиляция работает. Тем не менее макрос не отрабатывает (по <Enter>). При попытке выполнить его ("Run") всплывает вышеприведённая ошибка.
Автор: NvvLazyTiger
Дата сообщения: 28.08.2015 22:54
Ок. Компиляция макроса удалась (как-то). ;)
Теперь запуск...
Проще всего поместить скомпилированный макрос туда, где его ищет редактор.
Т.е. например, в C:\Program Files\Multi-Edit 2008\MAC\
Бо правильными настройками можно заняться и позднее... ;)
В общем, задача - чтобы по "Macro->Run->bAdvCr" стартовал наш ;) макрос.
NB. Это совершенно обязательно! Бо иначе привязка не будет возможна...
И ещё,.. макрос должен компилироваться в файл nAdvCr.mac
Это так?
К слову, оператор make_message(";)"); можно вставить в макрос в любое место.
Дабы явно видеть что стартануло или нет.
Автор: BVV63
Дата сообщения: 31.08.2015 05:54
NvvLazyTiger

Цитата:
"Macro->Run->bAdvCr"

Опечатка? nAdvCr


Цитата:
Проще всего поместить скомпилированный макрос туда, где его ищет редактор.
Т.е. например, в C:\Program Files\Multi-Edit 2008\MAC\

Скопировал. Стартует и переносит правильно. Как привязать к клавише <Enter> и типу файлов?

P. S. Чёрт, совсем в выходные забыл про задачу с вызовом программы... Сегодня попробую разобраться.

Добавлено:
Впрочем, с первым сейчас попробую сам разобраться.

Добавлено:
К <Enter> макрос привязал. Осталось к типу файла, даже близко не представляю, как.
Автор: NvvLazyTiger
Дата сообщения: 31.08.2015 10:12
Привет, BVV63
Цитата:
Опечатка? nAdvCr
Да, увы мне.

Цитата:
К <Enter> макрос привязал. Осталось к типу файла, даже близко не представляю, как.
Отлично!
Вопросы:
1. Нужный макрос должен работать с одним расширением (например *.Txt);
или с несколькими?
2. Можно ли "зашить" нужное прямо в макрос
или желательно привязываться к конфигурациям редактора?
NB. Второе существенно сложнее, но тоже решается в рабочем порядке.
Может быть нужно что-нибудь ещё касаемо распознавания нужного типа файла?
Автор: BVV63
Дата сообщения: 31.08.2015 10:30
NvvLazyTiger

Цитата:
1. Нужный макрос должен работать с одним расширением (например *.Txt);
или с несколькими?

С настройками по умолчанию ("Filename Extention" -> "Default").

Цитата:
2. Можно ли "зашить" нужное прямо в макрос
или желательно привязываться к конфигурациям редактора?

Да без разницы.

Цитата:
Может быть нужно что-нибудь ещё касаемо распознавания нужного типа файла?

Да нет, вроде. Как написал выше, это должно работать по дефолту. А в файлах, типы которых явно определены в ME - нет. Строго говоря, у меня кроме "Default" только один тип файлов прописан.
Автор: NvvLazyTiger
Дата сообщения: 31.08.2015 11:01
Ок, но мне нужно будет кое-что посмотреть/проверить.
Думаю, завтра будет.
К вечеру. ;)
Автор: BVV63
Дата сообщения: 01.09.2015 12:04
Обнаружился баг. С чем связано, не знаю, поэтому посылаю текстовый файл (буквенные символы я заменил на цифры): https://dropmefiles.com/1rd5T. При попытке переноса перед фрагментом, заполненном двойками (перед самой первой двойкой), фрагмент, состоящий из троек, исчезает (четвёрки остаются).
Автор: NvvLazyTiger
Дата сообщения: 02.09.2015 08:05
Привет, BVV63.
Цитата:
При попытке переноса перед фрагментом, заполненном двойками (перед самой первой двойкой), фрагмент, состоящий из троек, исчезает (четвёрки остаются)

У меня описанный фокус не удался.
Мои действия:

1. Скачиваю предложенное в файл a.a
2. Загружаю этот файл в редактор.
3. Выделяю в блок контекст с позиции 162 первой строки и до конца файла.
4-а. копирую блок в 29-ю позицию 4-й строки;
4-б. копирую в буфер, затем выгружаю этот буфер в другое окно.
5. Указанное не пропадает.

?
Автор: BVV63
Дата сообщения: 02.09.2015 08:58
NvvLazyTiger

Цитата:
3. Выделяю в блок контекст с позиции 162 первой строки и до конца файла.

Двойки начинаются со 166-й позиции.

Цитата:
4-а. копирую блок в 29-ю позицию 4-й строки;

У меня вторая строка заканчивается в 32-й позиции. Начальная табуляция скопировалась криво?
Не суть. Я повторил вышеуказанные действия 3...4b. Тройки не пропали (а почему, собственно, должны были пропасть?). Они пропадают именно при работе макроса, а указанные действия как с ним связаны?
Автор: NvvLazyTiger
Дата сообщения: 02.09.2015 10:11

Цитата:
Двойки начинаются со 166-й позиции
У меня по дефолту Tab - 4 позиции. ;)
Отсель и нужные позиции разнятся. Для поставил 8.

Ок. Нужно заменить в макросе nAdvCr вот эти две строки:
Код: str Str0 = file_name;
str Str1 = get_line; // текущая строка...
Автор: BVV63
Дата сообщения: 02.09.2015 10:37
NvvLazyTiger
В оригинале нет фрагмента

Код: str Str0 = file_name;
str Str1 = get_line; // текущая строка...
Автор: NvvLazyTiger
Дата сообщения: 02.09.2015 10:43
Суета...

Будет. Просто я не работал в требуемой плоскости с конфигами.
Не проблема, а тут суета подкралась... ;)

Добавлено:

Всё оказалось проще, чем я предполагал. ;)

Предлагаю заменить "макет" на "опытный образец":
[more]
Код: macro_file nAdvCr; // отработка действия "ввод" по правилам BVV63 ;)
// 2015, Author nvv (Nosov Vladislav AKA NvvLazyTiger), Vladivostok, Russia

// 2015.09.02, nvv, finished?
// 2015.08.25, nvv, creation

/* nvv: Итак, нажали "Ввод"... ;)
1. Если курсор стоит не в конце строки, то:
а) "разрезать" строку в этом месте на две; у нижней такой же отступ;
2. Если установлен режим "замена" (overwrite), то:
а) см. п.1.а);
4. Как быть, если ПОСЛЕ нажали клавишу управления, например <Page Up>, то
б) оставить "квази" пустую строку (т.е. с табами и пробелами);
--- BVV63
Поведение должно зависеть от расширения файла:
а) расширение относится к "DEFAULT" - делаем по описанному ("как нада!");
а) расширение НЕ относится к "DEFAULT" - делаем стандартный Cr.*/

macro nAdvCr { // отработка действия "ввод" по правилам BVV63 ;)
str Str0[ max_line_length ] = caps( "." + get_extension( file_name ) ); // для поиска отношения к расширению... ;)
str Str1[ max_line_length ] = get_line; // текущая строка...
int InsMod = insert_mode; // и что с того, что "всегда вставка"? ;)
int PosCur = c_col; // курсор здесь
int PosEol = svl( Str1 ); // а это - длинна текущей строки
int PosFwd;
int intRef = refresh;

if ( caps( parse_str( "\x7F" + "EXT=", global_str( Str0 ) ) ) == "DEFAULT" ) { // Оно!
insert_mode = True; // независимо от состояния Ins/Ovr
push_undo ; // вдруг НЕ понравится... ;)))
refresh = false; // а нефиг мельтешить! ;)
goto_col( 1 );
first_word; // встать на первый НЕ "white space" символ строки
PosFwd = c_col; // место этого символа
Str0 = copy( Str1, 1, PosFwd - 1 ); // это местный indent... ;)
goto_col( PosCur ); // а здесь нас вызвали... ;)))
cr;
if ( PosCur > PosEol ) { // -- мы за концом строки
put_line( Str0 ); // оформляем квази пустую строку
} else if ( PosCur <= PosFwd ) { // -- мы ДО первого символа или на нём
put_line( Str1 ); // строка съехала вниз...
} else { // -- курсор ВНУТРИ строки
put_line( Str0 + copy( Str1, PosCur, max_line_length ) ); // оформляем "отрезанное" ;)
}
goto_col( PosFwd ); // встанем куда след.
pop_undo ;
insert_mode = InsMod; // ну и вернём "всё как было" ;)
refresh = intRef;
redraw; // "картина-с маслом-с"...;)))
} else {
cr; // стандартная реакция
}
} // nAdvCr
Автор: BVV63
Дата сообщения: 03.09.2015 06:08
NvvLazyTiger
Many thanks! Всё работает, как и требовалось.
Автор: BVV63
Дата сообщения: 04.09.2015 13:40
NvvLazyTiger
Сегодня при попытке экспорта макроса на другой компьютер получил странный результат. Вначале просто скопировал макрос в соответствующий каталог и назначил ему клавишу <Enter>. По клавише он не заработал. Я его вызвал через "Run", он перевёл строку, но неправильно. И лишь когда я скопировал с компа, где его компилировал, весь каталог "Multi Edit Software", где хранятся настройки, макрос заработал.
Не подскажите, в чём тут может быть дело? Может, с компонентами, выбираемыми при установке как-то связано? Я на том компе при установке только один пункт (собственно, файлы программы) выбрал.
Автор: NvvLazyTiger
Дата сообщения: 05.09.2015 00:38
Привет, BVV63.

Цитата:
Не подскажите, в чём тут может быть дело?
Не знаю, но могу предположить.
MEW - это большое многокомпонентное взаимоувязанное хозяйство.
Политика "минимализма" в его отношении должна проводиться аккуратно и "по шагам".
С наблюдениями, анализом и... весьма желательно,
с пониманием зависимостей и последствий "отсечения ненужного".
Я абсолютно серьёзен.

С ходу могу сказать только, что add-ons можно не ставить - лишнее. INHO
По остальному (касаемо установки) скажу только проверив, т.е. позднее.

Цитата:
Я его вызвал через "Run", он перевёл строку, но неправильно. И лишь когда я скопировал с компа, где его компилировал, весь каталог "Multi Edit Software", где хранятся настройки, макрос заработал
Наиболее вероятная причина - не отрабатывалась "автоматическая" установка соответствующей глобальной переменной "настройки по расширению". Вот макрос и заработал как обычный "ввод".

Проверить просто (хотя и не наверняка):
<правая кнопка мыши>->Customize this file's settings->Extension setup...->
->в поле "Extension(s)" должно стоять "DEFAULT". Это так?

На сколько я понимаю, место рабочего применения макроса сильно ограничено пространством?
Ок, в какой объём можно/нужно втиснуть редактор?
Автор: BVV63
Дата сообщения: 07.09.2015 05:49
NvvLazyTiger

Цитата:
На сколько я понимаю, место рабочего применения макроса сильно ограничено пространством?
Ок, в какой объём можно/нужно втиснуть редактор?

Нет, не ограничено. Просто, привычка: устанавливать лишь то, что потребуется.

Цитата:
Проверить просто (хотя и не наверняка):
<правая кнопка мыши>->Customize this file's settings->Extension setup...->
->в поле "Extension(s)" должно стоять "DEFAULT". Это так?

Да, так.
Вообще-то, каталог настроек "Multi Edit Software" у меня хранится отдельно (с заранее заданными настройками). Когда я устанавливаю ME, то из компонентов выбираю только собственно файлы программы, а после установки первым делом удаляю созданный одноимённый каталог и копирую на его место свой. Когда (в целях компиляции макроса) я удалил подчистую ME и переустанавливал его, я оставил компоненты по умолчанию (а не то и собственно компилятор бы не был установлен), после установки скомпилировал макрос при настройках по умолчанию. Когда макрос заработал, я нативный каталог "Multi Edit Software" переименовал, а на его место скопировал свой. Затем сдружил макрос с <Enter>, и работал при своих настройках. Т. е. по идее на другом компе также достаточно было бы макрос скопировать в соответствующий каталог, ассоциировать его с <Enter> и всё... Но почему-то макрос не заработал, пока каталог настроек не был взят с первого компа.
Вот я и не понимаю, с чем это может быть связано. Разницы-то в настройках вроде бы быть не должно.

Добавлено:
Сегодня ещё попробую поэкспериментировать. Удалю с того компа ME, установлю с нуля (по минимуму), настрою с нуля, и попробую туда импортировать макрос.
Автор: BVV63
Дата сообщения: 07.09.2015 08:01
Хм, удивительно... Установил с нуля, настроил с нуля, скопировал макрос, и тот подхватился безо всяких проблем.
Ну ладно, сохраню новую конфигурацию для дальнейшего её использования.
Автор: NvvLazyTiger
Дата сообщения: 07.09.2015 11:22
Привет, BVV63.

Цитата:
Установил с нуля, настроил с нуля, скопировал макрос, и тот подхватился безо всяких проблем.
Ну ладно, сохраню новую конфигурацию для дальнейшего её использования.
Вообще-то у редактора два основных каталога (с подкаталогами)... ;)

Один - "общий", с бинарниками, общими макросами и т.п.
По умолчанию размещается в "Program Files".

Второй - "частный" (конкретного юзера - с конфигами, "личными" макросами и проч.).
Размещается тупо и молча(!) в "Documents and Settings".

Для нормальной работы нужны оба! ;)))

Цитата:
Нет, не ограничено. Просто, привычка: устанавливать лишь то, что потребуется
Ага...
А потом компилировать макросы на другом компе, копировать и преодолевать...

Согласен - дело вкуса. Тем более, у редактора ненужного - более чем (в т.ч. и на мой взгляд).
Но!..
Например у меня примерно пол мегабайта текстов своих макросов,
Которые превращают эффективную работу (в редакторе) в удобную и приятную.
+ Исправляют некоторые мешающие мне ошибки (баги) системного хозяйства.

---
Удачи!
Влад.
Автор: BVV63
Дата сообщения: 07.09.2015 12:52
NvvLazyTiger

Цитата:
Вообще-то у редактора два основных каталога (с подкаталогами)...

Ну так я, конечно же, имел ввиду тот, что хранит пользовательские настройки. Начиная с Висты, он уже не в "Documents and Settings", а в "Users" (по умолчанию).
Бинарники-то я честно инсталлирую каждый раз.

Цитата:
Ага...
А потом компилировать макросы на другом компе, копировать и преодолевать...

До этого не пользовался ими. Кроме одного, который я создал через "Record" (снимал/устанавливал аттрибут "Read-Only").
Автор: NvvLazyTiger
Дата сообщения: 09.09.2015 04:26
Привет, BVV63.

Цитата:
Ну так я, конечно же, имел ввиду тот, что хранит пользовательские настройки. Начиная с Висты, он уже не в "Documents and Settings", а в "Users" (по умолчанию).
Бинарники-то я честно инсталлирую каждый раз.
Сурово...
А я уже и не припомню, когда переставлял редактор именно по нужде.
Сделал квази-портабл, прикопал и забот не знаю...
Чуть что - грохнул рабочий экземпляр и скопировал копию. ;)
И работаю дальше,.. без забот... ;)))

Цитата:
До этого не пользовался ими. Кроме одного, который я создал через "Record" (снимал/устанавливал аттрибут "Read-Only")
Через "Record" - это некая последовательность нажатий клавиш,
т.е. строго говоря это не макрос (скомпилированный текст [макроса]). Но это так, к слову.
Но... Если используется каталог с настройками пользователя, то там должен быть подкаталог Mac.
Именно для "своих" макросов. Типа nAdvCr.
;)

BTW По мотивам нашего взаимодействия...
Цитата:

Цитата: А <Del>-то здесь причём?
Проверка строки на наличие табуляций.
Автор: BVV63
Дата сообщения: 09.09.2015 08:55
NvvLazyTiger

Цитата:
Предлагаю взглянуть на простенький макрос nHexStr

Взглянул. Что ж, буду использовать, а то в этой цели открывал файл в просмотрщике Total Commander и переходил в HEX-режим.

Цитата:
Через "Record" - это некая последовательность нажатий клавиш,
т.е. строго говоря это не макрос

Ну, конечно же, это не одно и то же, что скомпилированный текст. Однако, по распространённой терминологии как раз записанные последовательности нажатия клавиш, кликов мыши и т. п. как раз и принято называть макросами. А скомпилированный текст, наверное, правильнее обзывать подпрограммами.
Автор: NvvLazyTiger
Дата сообщения: 09.09.2015 15:58
BVV63
Цитата:
Ну, конечно же, это не одно и то же, что скомпилированный текст. Однако, по распространённой терминологии как раз записанные последовательности нажатия клавиш, кликов мыши и т. п. как раз и принято называть макросами. А скомпилированный текст, наверное, правильнее обзывать подпрограммами.

Ок, формальное определение:
Цитата:
A Multi-Edit macro is a sequence of instructions that the user may save, retrieve and execute repeatedly. Unlike a simple keystroke macro, which merely repeats a series of operations already performed by the user, the CMACW macro language allows for conditional action, user interface and manipulation of a variety of data types, including strings of text, integers and real numbers.
;)
Автор: NvvLazyTiger
Дата сообщения: 26.09.2015 05:31
Привет, BVV63.

Ещё кое-что по мотивам...
Цитата:
До этого не пользовался ими. Кроме одного, который я создал через "Record" (снимал/устанавливал аттрибут "Read-Only")
Меня заинтересовало...

Ок. Предлагаю взглянуть на сравнительно простой макрос fAttrs.s
[more]
Код: macro_file fAttrs;
// управление атрибутами файла в текущем окне
// без параметров выводит диалог
// с параметрами молча делает заказанное
// есть подсказка

// 2015.09.24, nvv, finished
// 2015.09.08, nvv, started

#include Dialog.sh // header file that contains the def for DlgExecute
#include StdDlgs.sh

#define nMacroName "fAttrs"
#define nCheckRob_Ctrl 1001
#define nCheckHid_Ctrl 1002
#define nCheckSys_Ctrl 1003
#define nCheckArc_Ctrl 1004
#define nBtn_Ok_Ctrl 1061 // кнопка "старт" (пуск)
#define nBtn_About_Ctrl 1062 // микро подсказка "о макросе"

void fAttrs {
int fAtr = Cur_File_Attr; // Attributes:
int nAtr = fAtr;
int fRon = fAtr & 0x01; // 0x01 ReadOnly
int fHid = fAtr & 0x02; // 0x02 Hidden
int fSys = fAtr & 0x04; // 0x04 System
int fArc = fAtr & 0x20; // 0x20 Archive
int fDir = fAtr & 0x10; // 0x10 Directory
int fVol = fAtr & 0x08; // 0x08 Volume ID
int sDlg;
str Parm = caps( mparm_str );
char nSet;

if ( fVol ) {
MsgDlg("!Note - it's a VOLUME\\n"
+ "NO attributes to change with."
, nMacroName + ': Note!', "", 1 );
return();
}
if ( fDir ) {
if ( id_std_Yes != VerifyDlg
( "? It's a DIRECTORY\\n"
+ "Do you want to change its attributes?"
, nMacroName + ': CONFIRM', '', id_std_Yes, 0 ) ) {
return();
}
}
if ( svl( Parm ) ) { // заказаны явные дейстия, отработаем...
int nRon = xpos( "R", Parm, 1 ); // 0x01 Read Only
int nHid = xpos( "H", Parm, 1 ); // 0x02 Hidden
int nSys = xpos( "S", Parm, 1 ); // 0x04 System file
int nArc = xpos( "A", Parm, 1 ); // 0x20 Archive

// int fRon = fAtr & 0x01; // 0x01 Read Only
if ( nRon ) {
if ( str_char( Parm, nRon + 1 ) == "+" ) {
nAtr |= 0x01; // установим этот атрибут
Parm = str_ins( " ", str_del( Parm, nRon + 1, 1 ), nRon + 1 );
} else if ( str_char( Parm, nRon + 1 ) == "-" ) {
nAtr &= ( 0xFF ^ 0x01 ); // скинем этот атрибут
Parm = str_ins( " ", str_del( Parm, nRon + 1, 1 ), nRon + 1 );
} else {
nAtr ^= 0x01; // обратим этот атрибут
}
Parm = str_ins( " ", str_del( Parm, nRon, 1 ), nRon ); // уберём из строки параметров учтённое
}
// int fHid = fAtr & 0x02; // 0x02 Hidden
if ( nHid ) {
if ( str_char( Parm, nHid + 1 ) == "+" ) {
nAtr |= 0x02;
Parm = str_ins( " ", str_del( Parm, nHid + 1, 1 ), nHid + 1 );
} else if ( str_char( Parm, nHid + 1 ) == "-" ) {
nAtr &= ( 0xFF ^ 0x02 );
Parm = str_ins( " ", str_del( Parm, nHid + 1, 1 ), nHid + 1 );
} else {
nAtr ^= 0x02;
}
Parm = str_ins( " ", str_del( Parm, nHid, 1 ), nHid );
}
// int fSys = fAtr & 0x04; // 0x04 System file
if ( nSys ) {
if ( str_char( Parm, nSys + 1 ) == "+" ) {
nAtr |= 0x04;
Parm = str_ins( " ", str_del( Parm, nSys + 1, 1 ), nSys + 1 );
} else if ( str_char( Parm, nSys + 1 ) == "-" ) {
nAtr &= ( 0xFF ^ 0x04 );
Parm = str_ins( " ", str_del( Parm, nSys + 1, 1 ), nSys + 1 );
} else {
nAtr ^= 0x04;
}
Parm = str_ins( " ", str_del( Parm, nSys, 1 ), nSys );
}
// int fArc = fAtr & 0x20; // 0x20 Archive
if ( nArc ) {
if ( str_char( Parm, nArc + 1 ) == "+" ) {
nAtr |= 0x20;
Parm = str_ins( " ", str_del( Parm, nArc + 1, 1 ), nArc + 1 );
} else if ( str_char( Parm, nArc + 1 ) == "-" ) {
nAtr &= ( 0xFF ^ 0x20 );
Parm = str_ins( " ", str_del( Parm, nArc + 1, 1 ), nArc + 1 );
} else {
nAtr ^= 0x20;
}
Parm = str_ins( " ", str_del( Parm, nArc, 1 ), nArc );
}
if ( remove_space( Parm ) == "" ) {
Cur_File_Attr = nAtr; // сожмём то, что осталось. Пусто - Ок
} else { // НЕ пусто - товарищь НЕ понимает...
RM( "fAttrs_About" ); // ! в параметрах вызова есть лишнее-с
}

} else {
DlgCreate( sDlg );

DlgAddCtrl( sDlg, Dlg_Checkbox, "Read Only ", 1, 1, 30, 1, nCheckRob_Ctrl, 0, "" );
DlgAddCtrl( sDlg, Dlg_Checkbox, "Hidden ", 1, 2, 30, 1, nCheckHid_Ctrl, 0, "" );
DlgAddCtrl( sDlg, Dlg_Checkbox, "System file", 1, 3, 30, 1, nCheckSys_Ctrl, 0, "" );
DlgAddCtrl( sDlg, Dlg_Checkbox, "Archive ", 1, 4, 30, 1, nCheckArc_Ctrl, 0, "" );
DlgAddCtrl( sDlg, Dlg_PushButton, "OK", 5, 5, 9, 1, nBtn_Ok_Ctrl, dlgf_DefButton, "" );
DlgAddCtrl( sDlg, Dlg_PushButton, "&?", Dlg_PosOffset + 12, Dlg_PosOffset, 9, dlg_Units | 11
, nBtn_About_Ctrl, 0, "/M=fAttrs_About" );

DlgSetInt ( sDlg, nCheckRob_Ctrl, fRon ); // так было...
DlgSetInt ( sDlg, nCheckHid_Ctrl, fHid );
DlgSetInt ( sDlg, nCheckSys_Ctrl, fSys );
DlgSetInt ( sDlg, nCheckArc_Ctrl, fArc );

if ( Return_Int = DlgExecute( sDlg, nCheckRob_Ctrl, "Attributes to reset", "", "", 0 ) ) { // спросим...

fRon = DlgGetInt ( sDlg, nCheckRob_Ctrl ); // так стало...
fHid = ( DlgGetInt ( sDlg, nCheckHid_Ctrl ) << 1 );
fSys = ( DlgGetInt ( sDlg, nCheckSys_Ctrl ) << 2 );
fArc = ( DlgGetInt ( sDlg, nCheckArc_Ctrl ) << 5 );

nAtr = fRon + fHid + fSys + fArc + fDir + fVol; // соберём атрибуты в кучу

if ( nAtr != fAtr ) Cur_File_Attr = nAtr; // если изменилось - отработаем
}
DlgKill( sDlg );
}
}

void fAttrs_About { // микро подсказка (краткая справка)
MsgDlg( "'" + nMacroName + "' is a tool to handle\\n"
+ "current file attributes.\\n\\n"
+ "Parameters:\\n"
+ "none == to call a dialog\\n"
+ "'R' - ReadOnly (rOn)\\n"
+ "'H' - Hidden (Hid)\\n"
+ "'S' - System (Sys)\\n"
+ "'A' - Archive (Arc)\\n"
+ "(!) any case\\n\\n"
+ "Modifiers:\\n"
+ "'+' - set\\n"
+ "'-' - clear\\n"
+ "none - switch\\n"
+ "spaces ' ' - ignored\\n\\n"
+ "Example:\\n"
+ "'R-h s+' == clear rOn, switch Hid, set Sys"
, 'About ' + nMacroName + '...', "", 1 );
}
Автор: BVV63
Дата сообщения: 16.12.2015 11:50
NvvLazyTiger

Цитата:
fAttrs.s

Ну, мне как бы столько всего и не надо было.

А вот ещё что надумалось. По комбинациям <Ctrl>+<Left> и <Ctrl>+<Right> в текстовом окне курсор переводится на слово влево-вправо. При этом многие спецсимволы игнорируются (например "|"), на них курсор не встаёт (что, может, и логично, но для меня неудобно). Нельзя ли сделать так, чтобы ME переводил курсор на любой начальный символ "слов", следующий за пробелами/горизонтальными табуляциями?
Автор: NvvLazyTiger
Дата сообщения: 31.12.2015 23:09
Привет, BVV63.

Цитата:
По комбинациям <Ctrl>+<Left> и <Ctrl>+<Right> в текстовом окне курсор переводится на слово влево-вправо.
[...]
Нельзя ли сделать так, чтобы ME переводил курсор на любой начальный символ "слов", следующий за пробелами/горизонтальными табуляциями?
Можно.

а) Простейший путь (через настройки):
. Menu->Tools->Customize...->Editing->Word delimits
Здесь глобально задаются все символы, которые не являются частью слов.
NB. Символ "|" (0x7C) - это мета-символ. Удваивается, если задаётся явно.
+ он же задаёт т.н. "непечатные" символы таблицы Ascii.
Например: "|9" == 0x09 == символ табуляции.

б) Альтернатива:
Символы, заданные в п.а) хранятся в глобальной перемнной Word_Delimits.
На этом можно сыграть.
Например, у меня есть комплект 3-х макросов. Ниже - шапка одного из:
Код: macro K_WordR TRANS2 { // Пропуск слова вправо 30/01/90 14:12
// ------------------------------------------------------------------
// Все символы разделяются на три группы :
// 1-пробел (и приравненные к нему - |09 - табуляция,
// |01 - заполнители после табуляции
// 2-ограничители (из WORD_DELIMITS)
// - хотя группа 1 - тоже ограничители, но есть разница;
// 3 - прочие символы, составляющие слово
// ------------------------------------------------------------------
// Алгоритм :
// 1. Если первый символ из группы 1 - то дойти до первого символа не
// относящегося к группе 1 - и конец.
// 2. Если первый символ из группы 2 - то дойти до первого символа не
// относящегося к группе 2 (или конца строки) - и конец
// 3. Если первый символ из группы 3 - то дойти до первого символа не
// относящегося к группе 3 (или конца строки) - и конец
// ------------------------------------------------------------------
// Author: Е.Г.Корзун. Improve & Adaptation NVV 22.01.93 21:13
Автор: BVV63
Дата сообщения: 19.01.2016 05:43
NvvLazyTiger
Спасибо за ответ. С прошедшим.

Цитата:
Символ "|" (0x7C) - это мета-символ. Удваивается, если задаётся явно.

Но он и так в этом поле имеется (удвоенный):

Цитата:
|9|1 .()"',$@!%^&*{}[]?/||;:+-<>~

Тем не менее на вертикальную черту курсор не встаёт.

Добавлено:
А понял, нужно наоборот убирать из списка.

Страницы: 12345678

Предыдущая тема: Файлы с расширением *.img и *.dmg, чем их открыть?!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.