|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
Уважаемые коллеги задача такова есть функция написанная на С++ часть процедур и функций работают, но вот такая функция которая использует зависимую структуру Object не работает я вообще не понимаю как ее описать для PB FUNCTION ULong FName( String a, Object strObject ) LIBRARY "FDLL.DLL" описание структуры в заголовочном файле для С++ написано следующее /**************************************************/ typedef enum {FIXNUM,FLOATNUM} object_type; typedef struct object { object_type type; union { struct { long value; } fixnum; struct { float value; } floatnum; } data; } object; /***********************************/ Как эту структуру описать для вызова в PB Спасибо! Очень нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 20:12 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevsky, по сути, вам надо передать длинное целое, значение с плавающей точкой и булевый селектор. Можно написать функцию-прокладку на плюсах. Если dll ваша, то это даже не гробит стройность системы. Если, как подозреваю, нет, то появится еще одна dll, которую придется таскать с собой. Если "очень нужно", то это вполне приемлемый workaround, нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2016, 23:26 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
Или вот - http://sqlbatch.com/pbinvoke/ Автор бывает тут, кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.05.2016, 09:23 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
exPBguyИли вот - http://sqlbatch.com/pbinvoke/ Автор бывает тут, кстати. Да, бывает )) Но в данном случае можно извратиться и без оберток на С. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Это набросок, псевдокод (нет ПБ под рукой). Суть в том что в зависимости от типа данных (long или float) вы заполняете соотв. вариант структуры и передаете в соотв. вариант функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2016, 17:31 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
2 Anatoly Moskovsky. А ведь верно. Спасибо, маэстро. Хоть вопрос и не мой, но увидеть правильное и красивое решение доставляет эстетическое удовольствие. :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 13:33 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, ОГРОМНОЕ СПАСИБО КРАСИВОЕ РЕШЕНИЕ ПОПРОБУЮ ОТВЕЧУ ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 14:03 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, Уважаемый Anatoly огромное спасибо за ответ у меня еще вопрос на самом деле структура зависимая от enum она возвращается из DLL в результате внутренней обработке по сему не известно заранее какого типа будет значение перечисления Опишу подробнее с конкретным примером есть API на C в доке к API написано что использовать для VC 6 and above есть файл заголовка есть DLL есть библиотека импорта есть пример вызова для С но у меня PB может подробнее напишете как вызвать втавлю файлы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 16:20 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevskyAnatoly Moskovsky, Уважаемый Anatoly огромное спасибо за ответ у меня еще вопрос на самом деле структура зависимая от enum она возвращается из DLL в результате внутренней обработке по сему не известно заранее какого типа будет значение перечисления Опишу подробнее с конкретным примером есть API на C в доке к API написано что использовать для VC 6 and above есть файл заголовка есть DLL есть библиотека импорта есть пример вызова для С но у меня PB может подробнее напишете как вызвать втавлю файлы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 16:21 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevskyVVasilevskyAnatoly Moskovsky, Уважаемый Anatoly огромное спасибо за ответ у меня еще вопрос на самом деле структура зависимая от enum она возвращается из DLL в результате внутренней обработке по сему не известно заранее какого типа будет значение перечисления Опишу подробнее с конкретным примером есть API на C в доке к API написано что использовать для VC 6 and above есть файл заголовка есть DLL есть библиотека импорта есть пример вызова для С но у меня PB может подробнее напишете как вызвать втавлю файлы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 16:21 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevskyVVasilevskyпропущено... здесь описание примеров вызова на С Нужно либо сделать другую DLL содержащие те же функции но возвращающие значения в структуры с которыми может работать PB либо научите работать с теми которые описаны в примере а именно /* Received message type */ typedef enum { PositiveReply, NegativeReply, ReplyReceivingFailure, CommandCancellation, ReplyTimeout, } REPLY_TYPE, *LPREPLY_TYPE; /* Data structure for positive reply message */ typedef struct { BYTE bCommandCode; BYTE bParameterCode; struct { BYTE bSt1; BYTE bSt0; } StatusCode; struct { DWORD dwSize; BYTE bBody[ MAX_DATA_ARRAY_SIZE]; } Data; } POSITIVE_REPLY, *LPPOSITIVE_REPLY; /* Data structure for negative reply message */ typedef struct { BYTE bCommandCode; BYTE bParameterCode; struct { BYTE bE1; BYTE bE0; } ErrorCode; struct { DWORD dwSize; BYTE bBody[ MAX_DATA_ARRAY_SIZE]; } Data; } NEGATIVE_REPLY, *LPNEGATIVE_REPLY; /* Data structure for reply message */ typedef struct { REPLY_TYPE replyType; union { POSITIVE_REPLY positiveReply; NEGATIVE_REPLY negativeReply; } message; } REPLY, *LPREPLY; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 16:25 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
exPBguy, Спасибо согласен с Вашим решением именно по этому пути я и хотел пойти сделать еще одну DLL но я в С уже давнооо не писал порядком все забыл пытался написать нифига не вышло лезут непонятные ошибки да и все ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 17:01 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevsky, Из приведенных деклараций видно, что структуры POSITIVE_REPLY и NEGATIVE_REPLY различаются только именованием полей хранящих код возврата. Поэтому на стороне ПБ их можно объединить в одну структуру. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
byte - начиная с ПБ10. В более ранних - тип char. К сожалению, как с этим всем работать не могу подсказать - слишком долго вникать. Единственное могу сказать, что непросто будет, учитывая указатели на массивы и колбэки, которые в ПБ не поддерживаются. Так что я бы на вашем месте таки сделал обертку на С с удобным для ПБ интерфейсом. А уже ее вызывал бы из ПБ. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2016, 22:16 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, Спасибо за ответ помогите сделать обертку не огу разобраться с С уже голову сломал а сишников у мя знакомых нет готов на взаимовыгодном условии можем обговорить в принципе мне нужны только 3и функции ConnectDevice DisconnectDevice ExecuteCommand Пусть внутри обертки на С делается все что угодно главное чтобы ПБ их мог вызвать передать параметры: ComPortNumber,BaudRate,TimeOut, CommandCode, CommandParm и получить данные в структуру которую понимает ПБ { ResultCode ULong, ReplyType String //"Positive" or "Negative" RetCode1_ofReplyType string, RetCode2_ofReplyType string, } Ну или чтото наподобие важно чтобы можно было передать все что нужно и получить все что должно быть но в виде понятного для ПБ Извините но вот это очень нужно месяц бьюсь с этим ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 13:33 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
exPBguyИли вот - http://sqlbatch.com/pbinvoke/ Автор бывает тут, кстати. Спасибо за НаВодку :-)) ное есть НО не понимает PBInvoke структуру в которой есть Enum зависимая структура :-)) и вообще перечисляемый тип PBInv не понимает :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 13:53 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevskyпомогите сделать обертку К сожалению занят я, а это не минутное дело. VVasilevskyне понимает PBInvoke структуру в которой есть Enum Замените enum на int и все дела ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 14:23 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyVVasilevskyпомогите сделать обертку К сожалению занят я, а это не минутное дело. VVasilevskyне понимает PBInvoke структуру в которой есть Enum Замените enum на int и все дела ) А если на коммерческой основе это будет неким поводом для того чтобы уделить время для этой задачи Моя благодарность будет адекватна адекватным Вашим запросам :-)) Понимаю, что не минута но в 2-а рабочих дня управитесь? За них заплачу как если бы Вы работали в Москве по средней ставке программера высокой категории :-=)) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 15:59 |
|
ПОМОГИТЕ ПЛЗ Structure+union
|
|||
---|---|---|---|
#18+
VVasilevsky, Сорри, нет свободного времени вообще. Предлагаю в форум Работа написать, наверняка С-шники без дела там тусуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 17:59 |
|
|
start [/forum/topic.php?fid=15&fpage=7&tid=1335206]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 340ms |
total: | 494ms |
0 / 0 |