purebasic.info

PureBasic forum
Текущее время: Вт сен 25, 2018 1:12 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 10:09 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 200
Благодарил (а): 20 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Я немного посмотрел примеров и заметил часто использование приравнивание к 0, типа:
Код:
1
If Len(Text$)<>0 ; зачем приравнивание?


ещё в AutoIt3 я старался избавиться от лишних действий, и поняв что результат функции уже является булевым, результатом, убирал лишнее сравнение с 0.

Эти две строки работают одинаково
Код:
1
2
If Len(Text$)<>0
If Len(Text$)


как и в AutoIt3, 0 является False, остальное True


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 10:38 am 
Не в сети
док

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 104
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
AZJIO писал(а):
как и в AutoIt3,

Что это за муть "автоит"?
Почему пурик надо обьяснять через какой-то сторонний хлам?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 10:55 am 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 200
Благодарил (а): 20 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Дегтярёв писал(а):
AZJIO писал(а):
как и в AutoIt3,

Что это за муть "автоит"?
Почему пурик надо обьяснять через какой-то сторонний хлам?

У меня на хламе 50 прог написано, покажи что ты написал на не хламе. Как я понял ты просто любитель поговорить и поплевать, про таких говорят невежда, как в анекдоте про атеиста к которому пришёл ученик и говорит что я буду помогать тебе, он его спросил знаешь ли ты библию, спорил ли со старцами и т.д., он говорит не знаю но атеист качественный, он ему сказал - ты не атеист, ты невежда.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 11:50 am 
Не в сети
док

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 104
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Смысл вашего стартового поста, вопрос темы, "в чём разница строк".
А разница строк в том, что есть различие между нулём и величиной, отрицательной или положительной.
Не хочу вас обидеть, но вам придётся смириться с тем, что есть существенная разница между цифрой ноль и цифрой -3.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 12:06 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11260
Благодарил (а): 4 раз.
Поблагодарили: 431 раз.
В данном случае строки
Код:
1
2
If Len(Text$)<>0
If Len(Text$)

идентичны потому что во второй строке условие верно если результат не 0, т. е. аналогично первой строке. Первый вариант обычно применяют для наглядности чтобы было видно что условие выполняется если не ноль.
Правда длина строки отрицательной быть не может и правильнее писать.
Код:
1
If Len(Text$)>0


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 12:26 pm 
Не в сети
док

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 104
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Если сравнивать строки по длине, то, в некоторых случаях может быть и отрицательный результат.
Это написать такую строку невозможно, потому что, нечего будет писать.
Но сравнивать-то можно, это просто математика, логика, отрицательная величина, результат вычисления.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 2:07 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
AZJIO писал(а):
У меня на хламе 50 прог написано, покажи что ты написал на не хламе.

Я как то давно уже заглянул на сайт "One Hour Software", ссылочку сохранил, там больше сотни готовых программ на AutoIt, все с исходным кодом. Так что есть возможность повысить свой скилл до 150 программ! Не останавливайтесь на достигнутом, ссылкой поделюсь!
Да и вообще, как я понял, исходный код из программы на AutoIt можно достать, вроде это не так сложно, как из настоящего exe-шника?
И как сказал один программист на С#, который научился пользоваться декомпилятором .NET программ : "Я вдруг понял, что все программисты мира на .NET работают на меня, и нет предела моего мастерства!" :lol:

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 3:07 pm 
Не в сети
док

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 104
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
kvitaliy писал(а):
Не останавливайтесь на достигнутом,
философия
Да, это очень серьёзный вопрос, есть теория, если ты чего-то совершенствуешь, значит, ты в этом не разбираешься.
Если бы ты разбирался, ты бы уже не совершенствовал.
Это философское понимание, это очень важно.
Есть два высших виртуоза, по игре на балалайке, старый и молодой.
Молодой играет по всем струнам разные ноты, а старый буровит одно и тоже на одной струне.
Почему же так? Ведь, они же оба виртуозы.
Потому что, молодой ещё ищет, а старый уже всё нашёл, ему известно где совершенство.
Отсюда и ненависть к автоиту и его программам, это абсолютный хлам.
Потому что, я нашёл пурик и буду играть только на его струне, ибо, он вершина и больше некуда ничего совершенствовать.
Автор топика занимался автоитом по 18 часов в сутки, написал десятки программ.
Однако, он пришёл сюда, а следовательно, он ищет совершенства.
Если бы автоит не был хламом, он бы сюда бы не пришёл, а сидел бы на своём скрипто-форуме.
Однако, ему надоело писать скрипты и он понял, что нужно писать код.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 4:06 pm 
Не в сети
док

Зарегистрирован: Чт ноя 22, 2007 8:03 pm
Сообщений: 171
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Дегтярёв писал(а):
есть теория, если ты чего-то совершенствуешь, значит, ты в этом не разбираешься.
Если бы ты разбирался, ты бы уже не совершенствовал.

Вообще-то, это называется не философией, а демагогией ;)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 5:25 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 200
Благодарил (а): 20 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
Пётр писал(а):
Первый вариант обычно применяют для наглядности чтобы было видно что условие выполняется если не ноль.

Если бы эта наглядность не довешивала лишние мегафлопсы. Хорошо если компилятор автоматически наглядное компилировал в правильное на выходе, но ведь вряд ли он это сделает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 6:05 pm 
Не в сети
док

Зарегистрирован: Ср июн 18, 2014 6:34 pm
Сообщений: 104
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Smitis писал(а):
Вообще-то, это называется не философией, а демагогией ;)

оффтоп
Это не демагогия, а теория Питера, о некомпетентности.
А демагогия сюда не касается ни каким боком, ибо, она есть, всего-лишь, ораторские приемы.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 8:31 pm 
Не в сети
док

Зарегистрирован: Чт ноя 22, 2007 8:03 pm
Сообщений: 171
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Дегтярёв писал(а):
Это не демагогия, а теория Питера, о некомпетентности.

оффтоп
Ну, судя по всему, этот Питер как раз и есть демагог, да ещё знатный. Потому что пользуясь его теорией Вы сделали совершенно безапелляционные заявления (то, что я в предыдущем посте процитировал), а рассуждения содержат настолько явные логические ошибки и взаимоисключающие параграфы, что я бы этого Питера отправил бы в мусорную корзину не читая :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 8:40 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11260
Благодарил (а): 4 раз.
Поблагодарили: 431 раз.
AZJIO писал(а):
Хорошо если компилятор автоматически наглядное компилировал в правильное на выходе, но ведь вряд ли он это сделает.
Разница минимальная и отличие в одной асм инструкции.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; If Len(Text$)<>0
        PUSH     dword [v_Text$]
        CALL     _PB_Len@4
        MOV      ebx,eax
        AND      ebx,ebx
        JE       _EndIf2
; EndIf
_EndIf2:
;
; If Len(Text$)
        PUSH     dword [v_Text$]
        CALL     _PB_Len@4
        AND      eax,eax
        JE       _EndIf4
; EndIf
_EndIf4:

Для x64 похожий код.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; If Len(Text$)<>0
  MOV    rcx,qword [v_Text$]
  CALL  PB_Len
  MOV    r15,rax
  AND    r15,r15
  JE    _EndIf2
; EndIf
_EndIf2:
;
; If Len(Text$)
  MOV    rcx,qword [v_Text$]
  CALL  PB_Len
  AND    rax,rax
  JE    _EndIf4
; EndIf
_EndIf4:


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Ср июн 06, 2018 11:22 pm 
Не в сети
док

Зарегистрирован: Чт ноя 22, 2007 8:03 pm
Сообщений: 171
Откуда: Питер
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Пётр писал(а):
Разница минимальная и отличие в одной асм инструкции.

Интересно, а во что скомпилируется инструкция "If Text$", делающая то же самое? (У меня сейчас нет возможности проверить)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: If Len(Text$)<>0 ; зачем приравнивание?
СообщениеДобавлено: Чт июн 07, 2018 5:15 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 573
Благодарил (а): 2 раз.
Поблагодарили: 32 раз.
Пункты репутации: 9
По идеи зачем нужно вычислять длину текста,когда достаточно посмотреть на первый символ.что бы понять есть он или нет :roll:


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB