| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Странное поведение wcmatch

Странное поведение wcmatch

Ответ
Поиск в этой теме
Непрочитано 24.11.2014, 12:28 #1
Странное поведение wcmatch
mkung
 
RUSSIA
Регистрация: 05.09.2007
Сообщений: 165

Прошу прощения - ступил! Почему-то решил, что wcmatch работает как vl-string-search...
Не могу понять причину несрабатывания WCMATCH.
Вот два кода для примера:
Код:
[Выделить все]
(setq pc3 "t:\\autocad\\plotters\\pc3;T:\\AutoCAD\\Plotters\\PC3")
(if (not (wcmatch pc3 "T:\\AutoCAD\\Plotters\\PC3"))
    (princ "\n Путь T:\\AutoCAD\\Plotters\\PC3 не найден!")
    (princ "\n Путь T:\\AutoCAD\\Plotters\\PC3 найден!")
)
Пишет - путь не найден!
Код:
[Выделить все]
(setq pc3 "T:\\AutoCAD\\Plotters\\PC3")
(if (not (wcmatch pc3 "T:\\AutoCAD\\Plotters\\PC3"))
    (princ "\n Путь T:\\AutoCAD\\Plotters\\PC3 не найден!")
    (princ "\n Путь T:\\AutoCAD\\Plotters\\PC3 найден!")
)
Пишет - путь найден!
В чем тут дело? Ведь образец есть и в той и в другой строке!

Последний раз редактировалось mkung, 24.11.2014 в 13:00.
Просмотров: 5543
 
Непрочитано 24.11.2014, 12:35
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Приводи строки к одинаковому регистру (см. strcase) и только потом сравнивай:
"a" <> "A"
"A" = "A"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.11.2014, 12:53
#3
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


В WCMATCH шаблоны разделяются не точкой с запятой а просто запятой: "t:\\autocad\\plotters\\pc3,T:\\AutoCAD\\Plotters\\PC3".
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 24.11.2014, 14:42
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


И вообще-то еще момент (насколько я помню): сначала сравниваемая строка, а только потом маска.
Код:
[Выделить все]
 (setq pc3  "t:\\autocad\\plotters\\pc3,T:\\AutoCAD\\Plotters\\PC3"
      path "T:\\AutoCAD\\Plotters\\PC3"
      ) ;_ end of setq
(princ (strcat "\n Путь \""
               path
               "\""
               (if (wcmatch (strcase path) (strcase pc3))
                 ""
                 " не"
                 ) ;_ end of if
               " найден!"
               ) ;_ end of strcat
       ) ;_ end of princ
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.03.2017, 08:38
#5
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Приветствую!
мне тоже нужен совет..
Код:
[Выделить все]
 
Команда: (wcmatch "qweqweasdasd" "qweqwe,*")
T
Команда: (wcmatch "qweqwe asdasd" "qweqwe,*")
T
Команда: (wcmatch "qweqwe asdasd" "qweqwed,*")
T
Команда: (wcmatch "qweqwe asdasd" "qweqwedsdf,*")
T
почему последние два сравнения Т ?
tujn08 вне форума  
 
Непрочитано 31.03.2017, 09:47
1 | 1 #6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Во всех строках: не отвечает первой части маски, но отвечает второй. И в чем собственно вопрос?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.03.2017, 10:14
#7
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
не отвечает первой части маски, но отвечает второй.
в книге неточно расписано об этом.
Т.е. Т, если любое из условий выполняется?
Я нужен результат, если совпадает первая часть, а вторая нет (т.е. nil в итоге).
Ладно, понятно, покумекаю над масками. Думаю тогда запятую убрать просто?
tujn08 вне форума  
 
Непрочитано 31.03.2017, 10:17
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


(wcmatch "qweqweasdasd" "qweqwe,*") можно преобразовать как (or (wcmatch "qweqweasdasd" "qweqwe") (wcmatch "qweqweasdasd" "*")), т.е. (or nil t). Естественно, возвращается t.
(wcmatch "qweqweasdasd" "qweqwe*") даст t.
Твою задачу не понял. Ты чего добиваешься-то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 31.03.2017, 10:37
#9
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Спасибо! Я разобрался уже- как ты написал.
Сравнивал значение атрибута "кабель 100м" и значение в экселе "кабель 50м". У меня как всегда все сложно и я сравниваю для начала столбец:
"кабель 100м" и значение в экселе "кабель ", а потом сравниваю "100м" и "50м". Т.е. порядок значений атрибутов не будет соответствовать порядку значений в экселе.

----- добавлено через 57 сек. -----
вместо "кабель " может быть "металлорукав "
tujn08 вне форума  
 
Непрочитано 31.03.2017, 10:57
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


(wcmatch "кабель 100м" "каб* ##м")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Странное поведение wcmatch

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 4555 24.03.2024 13:44
Странное поведение (itoa(vla-get-objectid obj)) nolte Программирование 24 23.04.2014 13:19
Странное поведение некоторых размеров при перетаскивании. Marv AutoCAD 13 27.10.2010 14:40