|
|
  |
Разработка findcolor, findimage, Pure lua |
|
|
DarkMaster |
10.4.2021, 3:26
|
          
Модератор UOPilot
Сообщений: 9.735
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29623
Пользователь №: 11.279

|
Цитата Ну с другой стороны, ошибок на пустом месте тоже не бывает, так ? Бывают и очень много. Ошибок от непонимания, как "оно" должно работать лично у меня очень мало. Невнимательность, звонки, перерывы - топ причин. Цитата Я вот сейчас поигрался с виндовым LPCSTR и некоторыми типами из библиотеки c++ - не вижу проблем. Можно проблему как-то воспроизвести ? Кусочек кода там показать. Вообще просьба вытащить код 10 летней давности, который был освоением либо "надо сделать, за нами москва" это конечно идея интересная, но тут нужен стеклянный шар и духи, на край некромант. Не сыскать этого уже давно, у меня даже студии уже нет много лет. Код BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, void* lpOverlapped ); Вызови без кастов передав void*, void*, unsigned long, unsigned long*. А еще лучше вместо unsigned long* передать тот же void* - указатель это указатель, ничего нового в нем не будет. А можно и довести и вовсе до предела - передать вместо void* любимый и красивый unsigned int. Матом крыть не будет? Цитата Ну почему, вот ситуация - имеем хеш мапу. Получили хеш. Получаем индекс корзины, т.е. просто деление хеша на кол-во корзин. Результат дробный. Дальше по этому индексу (а он обрежется до целого) вставляем элемент. Вопрос в том предупредит ли компилятор об этом или нет.
На мой взгляд приведение разных типов данных должно быть явным, если возможна потеря данных. Касатаельно плавающей точки, так и вовсе возможно 3 приведения: отброс мантиссы, округление вверх, округление до целого. И лично мое мнение, если подобное преобразование используется, то оно должно быть явным. Преобразование же из 4 байтов беззнакового целого в 4 байта беззнакового целого (обозванного иначе) - для меня это бред сивой кобылы. При всем моем очень глубоком уважении к си (без иронии). Понятно, что может быть преобразование little/big endian, можно вообще выдумать другой формат хранения целого в этих 4 байтах, но речь то не об этом, речь о полностью идентичном формате, переобъявленном 10 раз. Сообщение отредактировал DarkMaster - 10.4.2021, 3:31
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
sutra |
10.4.2021, 10:56
|
      
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007

|
Цитата Эта идеология умерла минимум 30 лет назад. Ничего она не умерла. И не умрёт, во всяком случае пока мы будем использовать двоичную систему, кстати очень убогую с точки зрения логики. Самый простой пример, наша битовая маска, которая 24 бита. Да, для нас это 24 бита, а в реальности это всё порции по 4 байта и как хотите их обзывайте, только они так и останутся 4 байтами. Дело то не в компиляторе, которые пишут люди, а в людской гордыне. Каждый придумывает свою хрень, вместо того, чтобы прийти хотя бы к элементарным стандартам. И вместо того, чтобы решать реальные задачи, приходится заниматься вот такими глупостями, как изучением очередного дерьма, которое, используя вашу терминологию, тоже однозначно умрёт, думаю намного раньше, чем через 30 лет. Цитата Такие тесты вообще ничего не отражают Я же абсолютно ясно сказал - для смеха (IMG: style_emoticons/default/biggrin.gif) Возможно что-то где-то и тормозит, вопрос а на сколько? на 1 миллионную долю секунды? Тут такие якоря люди делают, такие вещи, совершенно не думая ни о какой скорости, что этот примитивный оператор - это просто невинное дитя. Вот почему я и говорю, не зная принципов работы конкретных функций, очень сложно писать код, отвечающий заданным требованиям. Понятно одно, чем ниже уровень, тем больше возможности для маневра, но конечно же это и лишнее время на разработку. Так для этого и делались библиотеки, чтобы грамотно придуманное один раз, потом использовалось многократно. Моя общая мысль очень проста, я не собираюсь изобретать колесо. Напротив, хотелось бы применять это колесо, создавая например автомобиль, а не неся это колесо на своей спине. Ну вот ведь очень забавно, ты Cirus взял и откопал способ получения битовой маски. А что 2-3 года назад этой возможности не было?? Была, просто мы о ней не знали. А про звук? Да наверняка такая же элементарщина, просто мы не знаем как к ней получить доступ. Вот про что я говорю, а не про синтетику тестов.
|
|
|
|
Cockney |
10.4.2021, 11:39
|
       
Master
Сообщений: 1.403
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 22551
Пользователь №: 16.156

|
Цитата(DarkMaster @ 10.4.2021, 3:26)  Бывают и очень много. Ошибок от непонимания, как "оно" должно работать лично у меня очень мало. Невнимательность, звонки, перерывы - топ причин. Вообще просьба вытащить код 10 летней давности, который был освоением либо "надо сделать, за нами москва" это конечно идея интересная, но тут нужен стеклянный шар и духи, на край некромант. Не сыскать этого уже давно, у меня даже студии уже нет много лет. Код BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, void* lpOverlapped ); Вызови без кастов передав void*, void*, unsigned long, unsigned long*. А еще лучше вместо unsigned long* передать тот же void* - указатель это указатель, ничего нового в нем не будет. А можно и довести и вовсе до предела - передать вместо void* любимый и красивый unsigned int. Матом крыть не будет? VC++ 2017 CE, C++17 Код const unsigned long l = 0; WriteFile(l, l, l, l, l);
Ни одного предупреждения даже на самом строгом уровне компиляции. Единственное, что не вышло это отправить unsigned int в lpBuffer, причина - LPCVOID объявлен как const char*, т.е. константный указатель, и передача без явного каста запрещена. Я же просто добавил const к переменной l. Из этого становится очевидно, что компилятор кроме размерности данных отслеживает еще и другие свойства их. Цитата(sutra @ 10.4.2021, 10:56)  Ничего она не умерла. И не умрёт, во всяком случае пока мы будем использовать двоичную систему, кстати очень убогую с точки зрения логики. Самый простой пример, наша битовая маска, которая 24 бита. Да, для нас это 24 бита, а в реальности это всё порции по 4 байта и как хотите их обзывайте, только они так и останутся 4 байтами. Дело то не в компиляторе, которые пишут люди, а в людской гордыне. Каждый придумывает свою хрень, вместо того, чтобы прийти хотя бы к элементарным стандартам. И вместо того, чтобы решать реальные задачи, приходится заниматься вот такими глупостями, как изучением очередного дерьма, которое, используя вашу терминологию, тоже однозначно умрёт, думаю намного раньше, чем через 30 лет.
Стандарты есть. Уже давно. И умирать они не планируют, напротив, все больше ужесточаются в угоду нормального кода. И благодаря им решаются действительно реальные задачи, а не поиск по битовым маскам. Да и причем тут двоичная система ? Никто на нее не посягает. Вопрос в том, что уже нет нужды биты выдирать руками, с этим справляется лучше машина и зачастую лучше чем человек.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|