|
|
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
OLE сервер: Код: pascal 1. 2. 3. 4. OLE клиент: Код: pascal 1. 2. 3. 4. Как забороть Stack Overflow в клиенте на этой строке? Какие причины могут быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2019, 20:13 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreat, ты случайно это не в методах отрисовки вызываешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 07:01 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreat Код: pascal 1. Может стоит привести к одному описанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 07:39 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
wadmanrgreat Код: pascal 1. Может стоит привести к одному описанию? Изначально без const было. Это я уже пытался забороть stack overflow. Не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 11:27 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Да, графика там может использоватся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 11:29 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
Увеличение размера стека приводит к out of memory. Причем передаваемые параметры не больше 100 кб суммарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 11:31 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreatЭто я уже пытался забороть stack overflow. Для обеих функций const пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 11:43 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
wadman, Как я в type library это сделаю? Ну и опять таки в сервере ошибки не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 11:49 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreatkealon(Ruslan), Да, графика там может использоватся.в проце прорисовки нельзя вызвать методы COM-объектов из других потоков (соответственно и процессов) WM_PAINT и ряд других сообщений обрабатываются во время ожидания внешней процедуры, соответственно и может получиться рекурсивный вызов с переполнением стека ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 17:04 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)в проце прорисовки нельзя вызвать методы COM-объектов из других потоков (соответственно и процессов) WM_PAINT и ряд других сообщений обрабатываются во время ожидания внешней процедуры, соответственно и может получиться рекурсивный вызов с переполнением стекаХм. Интересно. Вроде у меня в процессе прорисовки оно не вызывается. Но гляну в эту сторону. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 17:24 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreat, А под отладчиком самого стека вызовов не видно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 18:56 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
Ну и добавить что-то типа такого Код: pascal 1. 2. 3. 4. 5. 6. 7. и посмотреть, проблема в рекурсивном вызове TMBData.UniMessage или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 18:59 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_rgreat, А под отладчиком самого стека вызовов не видно?Битый он какой-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 21:51 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
После всяких тестов добился что теперь стабильно утекает не стек а память. Вызов происходит такого вида: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Код: pascal 1. 2. 3. 4. Надо как-то очищать/деинициализировать OleVariant?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 23:03 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
И да, с поточностью все хорошо. Поток 1, зацикливаний нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2019, 23:11 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreatНадо как-то очищать/деинициализировать OleVariant?!Если импорт интерфейсов правильный, а не как здесь , то не нужно. IDL описание метода покажи Из замечаний - в OleVariant нельзя записать AnsiString и string (UnicodeString). Только WideString. Поэтому у тебя вначале происходит конвертация AnsiString -> WideString и string->WideString, а потом WideString -> OleVariant (убедится в этом можно вызвав VarType(Parameters) и получить при этом varOleStr = 8). Т.к. все три типа являются управляемыми, то, возможно делфя забывает у кого-то уменьшить счетчик ссылок. Попробуй сделать так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ну и версию Делфи озвучь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:18 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
А вот так - не течет. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Мдя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:28 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Ну и версию Делфи озвучьXE3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:30 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
rgreatА вот так - не течет.Давай IDL. Явный косяк импорта rgreatXE3Сам на ней сижу и активно юзаю интерфейсы - полет нормальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:33 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Давай IDL.И pas описание метода интерфейса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:34 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_rgreatНадо как-то очищать/деинициализировать OleVariant?!IDL описание метода покажи Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:35 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 15:35 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
Не повторяется testole.idl Код: plaintext 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. testole_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. server.dpr Код: 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. client.dpr Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 16:18 |
|
||
|
OLE, Stack Overflow.
|
|||
|---|---|---|---|
|
#18+
Может быть там собака порылась в символах #0 в строке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2019, 16:28 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=65&tid=2039134]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 386ms |

| 0 / 0 |
