|
21.05.2024, 13:14 | #1 |
Участник
|
Like и слэш
Здравствуйте!
Microsoft dynamics ax 2012. Подскажите, почему like не срабатывает: X++: str s = "\\Projects\\Shared"; ; if (s like "\\Projects\\*") { info("Ok"); } |
|
21.05.2024, 16:15 | #2 |
Участник
|
А что по вашему мнению like должен сделать и почему?
Это же вроде как из sql ? А вы применяете его к строке. |
|
21.05.2024, 18:06 | #3 |
Участник
|
|
|
21.05.2024, 18:01 | #4 |
Участник
|
Если мне не изменяет память то надо слеши зачетверить, т.е. написать что-то типа
X++: str s = "\\Projects\\Shared"; ; if (s like "\\\\Projects\\\\*") { info("Ok"); } X++: str s = "\\Projects\\Shared"; ; if (s like @"\\\\Projects\\\\*") { info("Ok"); } |
|
22.05.2024, 10:12 | #5 |
Участник
|
|
|
21.05.2024, 22:16 | #6 |
Участник
|
По той причине, что обратный слеш в Axapta внутри текстовой константы - это управляющий символ, который показывает, что далее за ним следует некий управляющий символ
Например "\t" - символ табуляции "\n" - символ перевода строки "\r" - символ возврата каретки Чтобы вывести сам по себе обратный слеш как символ, надо его задвоить. "\\" - первый слеш будет интерпретирован как управляющий, а второй, собственно, и отобразится Альтернативный вариант, это использовать символ @ перед текстовой константой. Этот символ говорит о том, что следующий за ним текст надо воспринимать "как есть". Не анализировать на предмет наличия управляющих символов. В данном случае, вот так @"\" То, с чем сравниваешь в твоем примере X++: info("\\Projects\\*"); info("\\\\Projects\\\\*"); info(@"\\Projects\\*");
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: sukhanchik (4). |
22.05.2024, 10:11 | #7 |
Участник
|
Добрый день.
Хочу поставить под сомнение оправданность использования оператора like в итоговых решениях. Для прототипирования или разовых операций - понятно, быстрая скорость разработки. В долгосрочной перспективе - потенциальное место для проблем быстродействия, либо поддержки решения. В случае с проектами можно же через TreeNode зайти и никаких констант: X++: SysTreeNode::getSharedProject().AOTfindChild(_projectName) Последний раз редактировалось Товарищ ♂uatr; 22.05.2024 в 10:22. |
|
22.05.2024, 11:15 | #8 |
Участник
|
Цитата:
Я 2 примера привел не потому что они эквивалентны, а потому что не помнил точно сколько слешей надо ставить - 4 или 8. Один из вариантов должен был подойти. Предоставил возможность проверить это автору темы. Нам же еще работать немного надо |
|
22.05.2024, 14:27 | #9 |
Участник
|
Обходной путь - в обеих строках заменить слеш на какой-то другой символ и сравнивать через like измененные строки. Чтобы обойтись без экранирования. Например на $ или #.
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
stoneridgesoftware: X++ Select Statements That Look More Like SQL | 2 | |||
ax-erp: ‘Not Like’ in Dynamics AX | 0 | |||
Fred Shen: 'Not Like' in Dynamics AX | 0 |
|