Что использовать вместо ReverseBytes?

В XE8 (без изменений в Сиэтле) ReverseBytes перемещен с FMX.Types на FMX.Utils и помечен как устаревший. Функция берет буфер и меняет порядок его байтов. Почему он помечен как устаревший и какую другую функцию следует использовать вместо него?


person DNR    schedule 12.02.2016    source источник
comment
Скорее всего, он устарел, потому что это грязный низкоуровневый метод без безопасности типов, и есть лучшие способы решения типов проблем, для которых вы обычно его используете. Что ты пытаешься сделать? Является ли это проблемой порядка байтов между хостом и сетью?   -  person J...    schedule 12.02.2016
comment
Какую проблему ты пытаешься решить? Почему вы чувствуете необходимость вызывать эту функцию в первую очередь?   -  person David Heffernan    schedule 12.02.2016
comment
Я читаю двойной (старший порядок байтов) из потока в буфер, меняю порядок байтов, а затем получаю доступ к памяти как двойной.   -  person DNR    schedule 12.02.2016
comment
Тогда вы используете неправильную функцию. Вам нужно преобразовать из сети в хост. Который оказывается идентичным для этого конкретного хоста. Найдите 64-битную сеть для хост-функции. Наверняка есть один в rtl.   -  person David Heffernan    schedule 12.02.2016
comment
@DavidHeffernan Что это за функция преобразования сети/хоста? Быстрый гугл ничего не показывает - либо настраиваемый метод, либо использование ReverseBytes метода, о котором спрашивает ОП. См. stackoverflow.com/questions/12966182/ и stackoverflow.com/questions/13505211/   -  person David    schedule 12.02.2016
comment
@DavidM Такие функции, как ntohs, ntohl и так далее.   -  person David Heffernan    schedule 12.02.2016
comment
Спасибо. Если кто-то хочет опубликовать это как причину отказа от функции, я приму это.   -  person DNR    schedule 13.02.2016
comment
@DavidM: если есть функции, которые работают, но предоставляются ОС на каждой из платформ, то почему бы и нет? Или ваш вопрос касается NIH?   -  person Rudy Velthuis    schedule 15.02.2016
comment
@RudyVelthuis Нет, это тот случай, когда нужна кроссплатформенная RTL. Т.е. написать код один раз, чтобы он работал на Windows/OSX/и т. д. Кажется, что-то вроде сетевого порядка байтов было бы неплохо иметь в RTL, доступном для всех платформ.   -  person David    schedule 16.02.2016
comment
@DavidM: Такие функции, как ntohl(), htonl() и т. д., насколько я знаю, доступны на большинстве платформ. IIRC, это функции POSIX. Поэтому я не вижу необходимости в Delphi определять свои собственные.   -  person Rudy Velthuis    schedule 17.02.2016