Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Сравнение строк
DarkMaster
сообщение 8.11.2012, 9:26
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.740
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29643
Пользователь №: 11.279



Мне уже который год выносит мозг конструкция:
set $1 asd
set $2 s
if $1 < $2
log succes
end_if

Почему истина то? Как строка asd может быть меньше, чем s? Ведь по логике, если $2 > $1, значит строка $2 содержит в себе $1 и еще что-нибудь, 5 > 3, 5 содержит в себе 3 и еще 2, но почему по факту строковое условие работает наоборот?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.11.2012, 10:27
Сообщение #2


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Это похоже не на знак "больше", а на знак "входит".
$2 > $1 ($2 входит в $1).
Операция сравнения здесь неуместна в смысле содержит/не содержит. Для проверки вхождения лучше использовать функцию Index.
Строки на больше/меньше можно сравнивать только по их длине или по числовому содержимому, имхо.

Сообщение отредактировал Zeleax - 8.11.2012, 10:29


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.11.2012, 10:50
Сообщение #3


***********

Модератор UOPilot
Сообщений: 9.740
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29643
Пользователь №: 11.279



А это => видимо стрелочка? А скрипт в виде белочки должен писать стишки про орешки? (IMG:style_emoticons/default/stars.gif)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.11.2012, 11:00
Сообщение #4


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(DarkMaster @ 8.11.2012, 10:50) *

А это => видимо стрелочка? А скрипт в виде белочки должен писать стишки про орешки? (IMG:style_emoticons/default/stars.gif)

Согласен, что не совсем правильно сейчас реализовано, но так проще запомнить. (IMG:style_emoticons/default/smile.gif)

Сообщение отредактировал Zeleax - 8.11.2012, 11:01


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 8.11.2012, 11:59
Сообщение #5


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



(IMG:style_emoticons/default/smile.gif)

"содержится" это именно <= и >=,
а < и > сравнивают строки посимвольно, в данном случае первый же символ второй строки "S" больше первого символа первой строки "A"


Сравнение выполняет команда CompareStr.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.11.2012, 12:31
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.740
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29643
Пользователь №: 11.279



if sa <= a
log 1
end_if

stop_script

результат тот же.
А про ошибку с <, > спасибо.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.11.2012, 12:44
Сообщение #7


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(DarkMaster @ 8.11.2012, 12:31) *

if sa <= a
log 1
end_if

stop_script

результат тот же.
А про ошибку с <, > спасибо.

Ну так правильно:
'a' входит в 'sa': a => sa, точнее a >= sa

Цитата(WKnight @ 8.11.2012, 11:59) *
Сравнение выполняет команда CompareStr.

Никакого упоминания о ней в хелпе не нашел \
Или это команда в Delphi ?

Сообщение отредактировал Zeleax - 8.11.2012, 12:46


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 8.11.2012, 13:02
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.740
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29643
Пользователь №: 11.279



Цитата
Ну так правильно:
'a' входит в 'sa': a => sa, точнее a >= sa

в общем опять вернулись к псевдографике. это не входит, а больше или равно. извините, но у меня мозг не в состоянии ничего хорошего сказать по поводу такого глумления над математическими знаками. Ждем от делфика операторов <3 и ^^.

Сообщение отредактировал DarkMaster - 8.11.2012, 13:03


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 8.11.2012, 13:11
Сообщение #9


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



в C# лямбда-операторы так строятся )
x => x^2


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 12.11.2012, 13:44
Сообщение #10


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Если б сделал "=>" ворчали бы, что путаницу развожу (IMG:style_emoticons/default/smile.gif)
Можно кстати использовать только "<=", оно какбы и логичнее, и привычнее в свете старого синтаксиса проверки lastmsg?

Вернемся к началу, что нужно то от сравнения строк? (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 12.11.2012, 13:54
Сообщение #11


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



равна (=), - норм
не равна(!=), - норм
входит /не входит (Index), - норм
больше (или равно)/меньше (или равно) >=, <= - вот тут сейчас нелогично работает, т.к. проверяется на "входит/не входит". А должно проверяться на порядок сортировки по первым символам, имхо (как сейчас и реализовано с больше/меньше).


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 4.7.2025, 21:45
Designed by Nickostyle