Библиотека UIPEthernet - передача разных типов данных

я вас спросил - что показывает параметр size и что пришло?

А я ответил - в size - ноль.

в size - ноль?
Это при отсылке массива char?
Тогда вы все врете и у вас ничего не работает, поскольку ваш код при нулевом размере ничего бы не печатал.

Слушайте, это кому надо - вам или нам? Хотите помощи - отвечайте на вопросы четко и развернуто, а не чтобы только отвязались.

Вы пока пишете какую-то бессмыслицу. Если код работает с массивом char - он должен работать и с флоат, указатель на который приведен к символьному типу.
Вывод - вы где-то накосячили и надо найти где.

Так что еще раз спрашиваю - при такой пересылке

char fbuf[] = "ABC";
UDPServer->SendBuffer(“192.168.254.10”, 2000, fbuf, 4);

какой размер size возвращает приемник и что точно приходит?

ЗЫ а не хотите нормально разговаривать - так и скажите, не буду на вас время тратить.

Про size вы спрашивали в связи с отправкой flot’а. Когда отправляю ABC, получаю size = 3. Я вам ответил: “Так пробовал - все работает”.

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

Я уточню - отправляете строкой с явным указанием размера 4

и получаете на выходе 3?
Вы точно строку отправки не меняли и в ней стоит 4? Отвечайте четко, пожалуйста

Я использовал UDPServer->SendBuffer(“192.168.254.10”, 2000, buf, 3);

а что еще вы меняли? :slight_smile:

Слушайте, по разговору очевидно, что в программировании вы совсем не гуру. Так почему вы не делаете то, что вам говорят? К чему эти поправки, если вы явно не понимаете их смысла?

Ладно, я пас…разбирайтесь сами

Буду краток.

Если пользоваться библиотекой IdUDPServer и делать так:

fbuf[0] = 789;
UDPServer->SendBuffer(“192.168.254.10”, 2000, fbuf, 4);

то не работает.

А если делать так:

BYTE *Bbuf;
float fbuf[1];
fbuf[0] = 789;
Bbuf = (BYTE*)&fbuf[0];
UDPServer->SendBuffer(“192.168.254.10”, 2000, Bbuf, 4);

то все работает.

Может быть, кому-то, кто пишет под Borland’ом / Embarcadero, это пригодится.

А ведь у всех новичков висит объявление, как правильно вставлять код в сообщения. И хоть бы кто из них хоть раз прочитал…

1 лайк

Да, поправил.

Интересно, чем “правильное решение” ТС отличается от того, что предложил Садман

наверно тогда ТС поленился правильно скопировать или что-то от себя добавил, вот и не сработало…

Переведи в строку и передавай. По-другому это работать не будет, потому что физический формат данных на разных процессорах разный.

А что, IEEE 754 уже не действует?

На float - не обязан действовать. Как и на выравнивание, например.