|
|
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Создал com-объект, один из методов Item должен возвращать packed record. при вызове метода в ранее созданном объекте mycomobject.GetCerts.Item(1).Name возникает ошибка Invalid variant operation хотя к примеру метод mycomobject.GetCerts.Count нормально работает. т.е. дело в неправильной реализации метода. код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 14:21 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Для начала покажите idl. Потом как эта tlb проимпортировалась в pas и само описание класса реализации, Далее, это настоящий COM? Т.е. вы создаете объект через CreateComObject или простой интерфейс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 14:59 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, я вызываю ком-объект из клиента по имени mdlp := CreateOleObject('MyComObj.MyComObjC'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 15:49 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Еще и OLE. Не будет так работать. Давайте так_Vasilisk_Для начала покажите idl.а дальше будем рихтовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 15:53 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Еще и OLE. Не будет так работать. Давайте так_Vasilisk_Для начала покажите idl.а дальше будем рихтовать Код: javascript 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 16:21 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
убрал лишнее Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 16:24 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
_tlb.pas Код: pascal 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 16:36 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
evgen29Создал com-объект, один из методов Item должен возвращать packed record. Во-первых, использовать packed (и вообще record) в СОМ - необычно. Во-вторых, если уж используешь - все поля записи должны быть COM-совместимыми. То есть исключительно OleString вместо WideString. В-третьих, Дельфийские баги не позволяют методам интерфейса возвращать что-либо кроме HRESULT, то есть одни должны быть объявлены как safecall. То есть объявление в первом посте не соответствует ему в последнем. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 16:36 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovevgen29Создал com-объект, один из методов Item должен возвращать packed record. Во-первых, использовать packed (и вообще record) в СОМ - необычно. Во-вторых, если уж используешь - все поля записи должны быть COM-совместимыми. То есть исключительно OleString вместо WideString. В-третьих, Дельфийские баги не позволяют методам интерфейса возвращать что-либо кроме HRESULT, то есть одни должны быть объявлены как safecall. То есть объявление в первом посте не соответствует ему в последнем. ну я создаю архитектуру объекта через пункт View->Type Library Widestring вполне нормально обрабатывается, если я задаю его результатом функции-Метода с возвращаемым типом OleVariant; но тут возвращаться должна packed record. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 16:48 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
evgen29ну я создаю архитектуру объекта через пункт View->Type Library Widestring вполне нормально обрабатывается, если я задаю его результатом функции-Метода с возвращаемым типом OleVariant; но тут возвращаться должна packed record.так его и задавай, вот только из скриптовых языков ты потом разрулить такой результат не сможешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 17:18 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovисключительно OleString вместо WideString.WideString это настоящий BSTR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 17:30 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Возвращайте вместо записи интерфейс Код: javascript 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2019, 17:39 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
Есть мнение, что в IDL не указано выравнивание. Надо или в Delphi исправить на 8 (по умолчанию), или в IDL добавить pragma pack . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2019, 03:30 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
GunSmoker, да он просто пытается дуальный интерфейс создать, а они не поддерживают записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2019, 09:36 |
|
||
|
метод com-объекта не возвращает packed record
|
|||
|---|---|---|---|
|
#18+
в общем сделал. Подключаю дополнительный модуль работы с сертификатами, где храню массив записей и в initialization его заполняю, а в finalization очищаю. Возвращаю интерфейс со свойствами, каждое из которых лезет по индексу в этот массив записей и возвращает значение нужного мне поля. В принципе, так и планировал в плане B, но думал, что дуальный интерфейс поддерживает записи. Не поддерживает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39825023&tid=2039384]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 513ms |

| 0 / 0 |
