|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
17.09.2008, 15:53 | #1 | |
Как передать функции (getkword) Список ключевых слов из списка?
Инженер-электрик
Калининград
Регистрация: 13.10.2007
Сообщений: 151
|
||
Просмотров: 11346
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Я когда-то (не очень давно) своял следующию функцию:
Код:
(menu "Выберите тип светильников" (list "СВ1" "СВ2" "СВ3")) Из названий надо убрать пробелы - об них getkword спотыкаеться будет - выбирать по первому слову.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
Если бы не пробелы и слеши... Если сделаешь автозамену, то добиться результата не сложно:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Что нужно правильно сделать, чтобы данная конструкция корректно заработала
Код:
Далее aa вставляется в текст. В частности интересует: 1. Как делать пункты из двух слов (например, "Винный погреб")? Подчеркивание, неразрывный пробел - не обрабатываются, пишет "Неправильное ключевое слово". С тире обрабатывается, но его (тире) надо перед вставкой в текст заменить на пробел, а в например "Ванная-спа" должно тире остаться 2. Может, есть функция, которая спросит не КЛЮЧЕВЫЕ, а ЛЮБЫЕ слова и (словосочетания), чтоб выбрать из выпадающего меню и записать в переменную, потому как нельзя выбрать "Ванная" Может тут мое решение? А как ее сделать? |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
Примерно так:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Теряет второе слово... Возвращает в текст только "ВИнный"
И Вот эту пляску регистров не обойти, да? Ну чтоб все было как положено: первые заглавные (но не ключевые), остальные строчные? Пробовал getstring с аргументом t, но выпадающее меню не выскакивает, надо нажать вниз, - тогда выпадает. И никак не пойму, что отправляется в переменную? Если в initget объявляю варианты - выходят они, а не объявляю - используется список из getkword Последний раз редактировалось skkkk, 02.04.2012 в 22:40. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,850
|
Можно сказать, что "пляска регистров" - особенность поведения getkword. Если сильно хочется иметь полное словосочетание, можешь попробовать:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Глянь еще вот эту тему.
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Спасибо, Алексей!
Объясню, к чему пришел. Сразу скажу, что стремился максимально избежать танцев регистра, поскольку волновала эстетическая составляющая выпадающего списка в алфавитном порядке. Хотелось просто (без ключевых слов, в алфавитном порядке) выбрать из списка слово или словосочетание и присвоить его значение переменной. В initget прописал слова с заглавной буквы, а в словосочетаниях (два и более слов через пробел) - первое слово с заглавной, второе - с маленькой (в таком виде, как они должны вставляться в примитив - текст). В getkword в квадратных скобках повторил список значений-слов из initget, но всё строчными буквами (маленькими), КРОМЕ словосочетаний, где каждое слово начинается с большой буквы (совершенной эстетики не вышло, "ключеватость" слов тут отнюдь НЕ сыграла на руку). Вместо пробелов в словосочетаниях использовал "неразрывный пробел" (Ctrl+Shift+Пробел), потом заменял его на обычный пробел посредством vl-string-translate. В итоге у меня в выпадающем списке все слова в малом регистре, а в словосочетаниях - первая буква каждого слова - заглавная. Терпимо. Pastor, спасибо, её я уже видел |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
getkword - апофигей лаконичности, германские языки такие по определению, а вот словянам, приходится туго, иной менталитет. По сути ключевые слова запроса должны быть однословными, а слова начинаться с разных букв... Если вариантов много, то лучше делать диалоговое окно
|
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
стр. 253,254,259
едиственное, я бы вместо ok_only использовал бы cancel_button, то есть выбор опции нажатием на радиокнопку, отмена - нажатием на кнопку отмена, так экономится один клик. хотя пропадающее под радиокнопкой или при выборе из списка окно тож не айс Последний раз редактировалось gomer, 07.04.2012 в 19:31. |
|||
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
если диалог не хочешь, то мож пробнуть это http://www.theswamp.org/index.php?to...7746#msg377746
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
А если диалог, то посмотреть функцию loc:dwgru-get-user-dcl
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Опробовал разные варианты. Ох уж мне этот getkword!! Не пойму, что ему надо: то nil вернет, то сработает, то ему танцы регистра подавай. Наплевался я с ним вдоволь и пошел в DCL. Распробовал функцию VVA отсюда. Размещу-ка на всякий тут, а то ссылки часто летят
Код:
Но у getkword есть один большой плюс - исключается нажатие ОК. Цитата:
Цитата:
И еще: как в случае отмены прекратить выполнение функции? А то она дальше продолжается... |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
каждому элементу диалога можно назначить действие, в том числе и его закрытие, чем и пользуются программисты. Но я считаю, что выбор должен быть осознанным и в большинстве диалогов закрытие должно осуществляться с помощью кнопки accept из ok_cancel. Просто, потому, что возврат к диалогу при неверном "тыке" организовывать весьма накладно
для начала четко представить алгоритм, а потом посмотреть функции if, cond |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
>gomer
Впитал, благодарю Как назначить элементам list_box действие "accept"? Хочется попробовать, вдруг удобно? Отчего же? _undo или _erase? в зависимости от контекста и что проще, а потом повторный вызов. Куда ж четче? В теле функции идет запрос значения пользователя. Если значение выбрано, функция продолжается, если нет - выход. Кроме (exit) и (quit) есть варианты? Вообще это уже другая тема... Не говоря уж о DCL. |
|||
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Цитата:
так, да не так... Если данных нету,то выходим, иначе - продолжаем... Вроде одно и тоже, но читать такое поприятнее |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как преобразовать список в строку | ivspec | Программирование | 11 | 18.03.2015 10:18 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
Как пeренумеровать список в Sheet Set автоматом?? | Startrek | AutoCAD | 1 | 20.05.2006 09:54 |
чтение данных из файла | Александер | Программирование | 6 | 08.09.2005 10:24 |