Здравствуйте, Nimnul, Вы писали:
N>покажи как ты пробывал на основе данного примера.
N>данное сообщение получено с www.gotdotnet.ru N>ссылка на оригинальное сообщение
У меня такая же проблема с этими unionami. Пока получилось только "в лоб" сделать. Т.е. в зависимости от типа структура в unione формировать ее соответствующим образом. И вручную ставить размер максимальной. Но это не выход.
Пример тоже видел. Но как побороть то что все структуры в unione начинаются с одного адреса? Тут без Fieloffseta не обойтись. А если его использовать то в итоге ряд экзепшенов хватаешь.
Re[3]: Подскажите что не так делаю (Маршалинг + UNION в стру
От:
Аноним
Дата:
13.11.06 09:02
Оценка:
Здравствуйте, ZeeM, Вы писали:
ZM>Здравствуйте, Nimnul, Вы писали:
N>>покажи как ты пробывал на основе данного примера.
N>>данное сообщение получено с www.gotdotnet.ru N>>ссылка на оригинальное сообщение
ZM>У меня такая же проблема с этими unionami. Пока получилось только "в лоб" сделать. Т.е. в зависимости от типа структура в unione формировать ее соответствующим образом. И вручную ставить размер максимальной. Но это не выход.
ZM>Пример тоже видел. Но как побороть то что все структуры в unione начинаются с одного адреса? Тут без Fieloffseta не обойтись. А если его использовать то в итоге ряд экзепшенов хватаешь.
Неужели никто не работал с unioнами? Решение в лоб очень некрасивое. А при попытке сделать так как в шапке летит экзепшн
Could not load type 'Dispatcher.UnionStruct' from assembly 'Dispatcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field.
Re[4]: Подскажите что не так делаю (Маршалинг + UNION в стру
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ZeeM, Вы писали:
ZM>>Здравствуйте, Nimnul, Вы писали:
N>>>покажи как ты пробывал на основе данного примера.
N>>>данное сообщение получено с www.gotdotnet.ru N>>>ссылка на оригинальное сообщение
ZM>>У меня такая же проблема с этими unionami. Пока получилось только "в лоб" сделать. Т.е. в зависимости от типа структура в unione формировать ее соответствующим образом. И вручную ставить размер максимальной. Но это не выход.
ZM>>Пример тоже видел. Но как побороть то что все структуры в unione начинаются с одного адреса? Тут без Fieloffseta не обойтись. А если его использовать то в итоге ряд экзепшенов хватаешь.
А>Неужели никто не работал с unioнами? Решение в лоб очень некрасивое. А при попытке сделать так как в шапке летит экзепшн
А>Could not load type 'Dispatcher.UnionStruct' from assembly 'Dispatcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field.
IntPtr передаешь и не паришься.
Re[5]: Подскажите что не так делаю (Маршалинг + UNION в стру
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, ZeeM, Вы писали:
ZM>>>Здравствуйте, Nimnul, Вы писали:
N>>>>покажи как ты пробывал на основе данного примера.
N>>>>данное сообщение получено с www.gotdotnet.ru N>>>>ссылка на оригинальное сообщение
ZM>>>У меня такая же проблема с этими unionami. Пока получилось только "в лоб" сделать. Т.е. в зависимости от типа структура в unione формировать ее соответствующим образом. И вручную ставить размер максимальной. Но это не выход.
ZM>>>Пример тоже видел. Но как побороть то что все структуры в unione начинаются с одного адреса? Тут без Fieloffseta не обойтись. А если его использовать то в итоге ряд экзепшенов хватаешь.
А>>Неужели никто не работал с unioнами? Решение в лоб очень некрасивое. А при попытке сделать так как в шапке летит экзепшн
А>>Could not load type 'Dispatcher.UnionStruct' from assembly 'Dispatcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field.
C>IntPtr передаешь и не паришься.
Так дело в том что мне и так необходимо передавать указатель на массив байт в котором содержится структура.
Т.е. вместо каждой структуры, содержащейся в unione ты также предлагаешь вставлять указатель?
Re[5]: Подскажите что не так делаю (Маршалинг + UNION в стру
Здравствуйте, Codechanger, Вы писали: C>IntPtr передаешь и не паришься
Пробовал у меня же во втором варианте (закоментаренном ) так и есть
выделяю память и IntPtr на нее (поле info)
но та же ошибка Object reference not set to an instance of an object
а по поводу ошибки
Could not load type 'Dispatcher.UnionStruct' from assembly 'Dispatcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field.
просто получается что нельзя в структуре с указанием OffSet применять и value и ref types по крайней мере в Framework
v 1.1
Re[6]: Подскажите что не так делаю (Маршалинг + UNION в стру
От:
Аноним
Дата:
13.11.06 13:26
Оценка:
Здравствуйте, a_yenzh, Вы писали:
_>Здравствуйте, Codechanger, Вы писали: C>>IntPtr передаешь и не паришься _>Пробовал у меня же во втором варианте (закоментаренном ) так и есть _>выделяю память и IntPtr на нее (поле info) _>но та же ошибка Object reference not set to an instance of an object
_>а по поводу ошибки _>Could not load type 'Dispatcher.UnionStruct' from assembly 'Dispatcher, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset 0 that is incorrectly aligned or overlapped by a non-object field. _>просто получается что нельзя в структуре с указанием OffSet применять и value и ref types по крайней мере в Framework _>v 1.1
И еще — в unione будет содержаться указатель, который занимает 4 байта. В результате в union приходят некорректные данные.
Re[7]: Подскажите что не так делаю (Маршалинг + UNION в стру
Здравствуйте, a_yenzh, Вы писали:
_>вопрос закрыт.
_>ошибка была не там где искал _>но аналога анонимности добился :
_>
_>[StructLayout(LayoutKind.Explicit)]
_>public struct SpRecordMessage
_>{
_> [ FieldOffset( 0 )]
_> public int Size;
_> [ FieldOffset( 4 )]
_> public DateTime MsgTime;
_> [ FieldOffset( 20 )]
_> public int MsgType;
_> [ FieldOffset( 24 )]
_> public NewRing newRing;
_> [ FieldOffset( 24 )]
_> public ANIDetect aniDetected;
_> [ FieldOffset( 24 )]
_> public RecordRingType recordRingType;
_> [ FieldOffset( 24 )]
_> public NewOutPhone newOutPhone;
_> [ FieldOffset( 24 )]
_> public ANIDetect skipedPhoneNumber;
_> [ FieldOffset( 24 )]
_> public RecordStop recordStop;
_> [ FieldOffset( 24 )]
_> public NewChanelName newChanelName;
_> [MarshalAs(UnmanagedType.ByValTStr, SizeConst=4079),FieldOffset( 24 )]
_> public String cbStr;
_>}
_>
_>т.е. не вынося в отдельную структуру
А сами структуры, которые содержатся в unione ты как описываешь? Т.е. используя FieldOffset или нет?
И еще — получалось ли нормально получать указатель на такую структуру, содержащую union?
Re[6]: Подскажите что не так делаю (Маршалинг + UNION в стру
Здравствуйте, Nimnul, Вы писали:
N>Видимо ты еще мало попарился с маршалингом раз невнемлишь моим словам
Так и есть. Это мой первый опыт.
А что значит невнемлю? имеется ввиду что я не использую IntPtr с выделением памяти через Marshal? Так я так тоже пробовал но разницы не заметил.
ZeeM
структуры внутри юниона с атрибутом [StructLayout(LayoutKind.Sequential)]
но можно и FieldOffset но только главное чтобы не перекрывались поля структур разных типов (ref и value)