|
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
|
||||||||||||||||
Ссылка на структуры13.11.2019, 08:06. Показов 4289. Ответов 33
Метки нет (Все метки)
Сижу разбираюсь с кодом, ни как не могу понять, что тут происходит.
точнее понимаю но воспроизвести не получается. Есть две структуры вынесенные в заголовочный файл:
и потом принимаем из кода программы Датаграмму через ЮДП сокет:
struct TFTPData *data = (struct TFTPData*) recvData; в struct TFTPData имеется ссылка на структуру TFTPHeadr, поле типа short, и массив char, а передаем туда только один массив символов
0
|
||||||||||||||||
| 13.11.2019, 08:06 | |
|
Ответы с готовыми решениями:
33
Структуры/Работа с файлами(ошибка линковщика error LNK2019: ссылка на неразрешенный внешний символ)
Что лучше сквозная ссылка или одна статейная ссылка с одного домена? |
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
|
| 13.11.2019, 08:56 | |
|
содержимое начала массива recvData интерпретируется как экземпляр структуры TFTPData , указатель на этот экземпляр - data
ссылок в TFTPData никаких нету. TFTPData::data - это начало массива, лежащего после экземпляра TFTPData (грязный хак, как по мне)
0
|
|
|
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
|
|||||||
| 13.11.2019, 09:36 [ТС] | |||||||
|
Алексей1153, не совсем, что вы имеете ввиду. я понял что в recvData заполняется информация принятая через readDatagram и потом с помощью этих манипуляций присваиваем структуре. Непонятно как информация попадает в data[] структуры TFTPData и почему игнорируется short block;
0
|
|||||||
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
|
| 13.11.2019, 09:55 | |
|
Artem1990, например, входной поток данных имееи такой:
char recvData[1024]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee ,0xff,}; TFTPData* data = (TFTPData*) recvData; //интерпретация начала данных как экземпляра TFTPData, data - указатель на этот экземпляр поле TFTPData::data место не занимает, потому что определён как массив нулевой длины. Обращение к нему - обращение к данным, лежащим сразу после экземпляра структуры data->data[0]=0xf8; data->data[1]=0xf9; содержимое recvData == {0x11,0x22,0x33,0x44,0xf8,0xf9,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee ,0xff,}; доступ к заголовку data->header;
0
|
|
|
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
|
||
| 14.11.2019, 21:41 [ТС] | ||
|
0
|
||
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
|
| 14.11.2019, 22:13 | |
|
Artem1990, а задача как поставлена?
0
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,387
|
|
| 15.11.2019, 00:33 | |
|
Вообще адрес 1-гo элемента структуры всегда есть адрес и самой структуры.
0
|
|
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
||||||
| 15.11.2019, 08:42 | ||||||
|
peter_irich, хм, структура s_example с тобой не согласна
0
|
||||||
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,387
|
|
| 15.11.2019, 20:33 | |
|
Алексей1153, не знаю, что значит "virtual ~s_example(){}", но адреса структуры и её 1-го
элемента должны совпадать, эти свойство C. Сейчас я создал структуру с двумя элементами, 1-й - int, 2-й - double, адрес 1-го совпал с адресом структуры, получал их так же. Поэтому, например, часто адрес 1-го элемента приводят к адресу на всю структуру, некоторые этим широко пользуются.
0
|
|
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
|
| 15.11.2019, 20:41 | |
|
peter_irich, в Си - да, там нет виртуальных функций. Но тема то в разделе C++
0
|
|
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,387
|
|
| 15.11.2019, 21:27 | |
|
Алексей1153, Алексей1153, я не думаю, что между C и C++ могут быть различия
на уровне базовых свойств. Значит, в этой структуре i0 не является 1-м элементом. Если я всё же не прав и в C++ это свойство не гарантируется, то это один из очень редких таких случаев, пишут, что их можно пересчитать по пальцам одной руки.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 16.11.2019, 12:48 | ||
|
0
|
||
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,387
|
|
| 16.11.2019, 19:59 | |
|
DrOffset, благодарю. А почему эта таблица должна быть 1-м элементом?
Почему она не может быть, наоборот, последней, ведь компилятору и при исполнении в любом случае известно, где она? Почему нельзя секцию с ней и с этими функциями нельзя поместить, где угодно?
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||
| 16.11.2019, 20:35 | |||
|
Но на практике на эти соглашения может быть завязана не только текущая программа, но и другие, взаимодействующие с ней (например, посредством разделяемых библиотек). И вот тут уже нельзя просто так менять местами такие вещи, потому что остальные программы не узнают об этих изменениях и перестанут работать правильно. В частности под Windows на расположение VPTR в классе завязана вся технология COM. Поэтому обычно такие вещи фиксируются раз и навсегда для конкретной программной платформы и более никогда не меняются. А документы, подобные приведенному выше, призваны обеспечить разработчиков компиляторов единым подходом.
0
|
|||
|
367 / 223 / 53
Регистрация: 18.10.2017
Сообщений: 2,387
|
|
| 16.11.2019, 23:02 | |
|
DrOffset, понятно, если так, то делать нечего, надо соблюдать.
0
|
|
|
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
|
|||||||||||||||||||||||||||||||||||||
| 17.11.2019, 11:40 [ТС] | |||||||||||||||||||||||||||||||||||||
|
Приходит ответ на запроса от устройства в таком виде: Это пример:
Собственно говоря что мне нужно в идеале: данные пришли в виде предложения начиная '\0' в
COD = 0x02 а данные записать в массив. char words [5]; words[0] = первое слово ; words[1] = второе слово; words[2] = третье слово; words[3] = четвертое слово; words[4] = пятое слово; ну или данные сохранить в пять разных переменных можно чар, можно в стринг. использовал такой код:
Но не срабатывает
0
|
|||||||||||||||||||||||||||||||||||||
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
|
| 17.11.2019, 11:56 | |
|
Artem1990,
так? 0x00, - разделитель 0x02, - код 0x53,0x45,0x5a,0x5f,0x42,0x4d, - слово 0x00, - разделитель 0x53,0x4b,0x59,0x57,0x41,0x4c,0x4c,- слово 0x00, - разделитель ... 0x00, - разделитель 0x10,- слово 0x00 - разделитель
0
|
|
|
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
|
||
| 17.11.2019, 12:04 [ТС] | ||
|
Именно так.
только нужен из всего этого пакета только код операции: 0х02 и данные причем слова могут отличаться по длине. придел пакета 64 байта получается первое слово 15 символа максимум второе слово 8 символа максимум третье 8 символа максимум четвертое 20 символа максимум пятое 3 символа максимум
0
|
||
|
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
|
|
| 17.11.2019, 12:10 [ТС] | |
|
Вот что в реальной жизни приходит
только эксперементирую с QByteArray
0
|
|
|
фрилансер
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
|
||||||
| 17.11.2019, 13:08 | ||||||
Сообщение было отмечено Artem1990 как решение
Решение
0
|
||||||
| 17.11.2019, 13:08 | |
|
Помогаю со студенческими работами здесь
20
Как перенести продублировать данные из справочника.ЕдиницыИзмерения.Ссылка в справочник КлассификаторЕдиницИзмерения.Ссылка Если нет файла, но есть ссылка, то будет отображаться ссылка на указанную страницу... Как проверить - есть ли обратная ссылка ссылка? Загаловок как ссылка - но не ссылка в статье Ссылка, гиперссылка и перекрёстная ссылка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|