Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Имею переменную _bstr_t bstrStr. В неё залито какое то значение,типа"Hello,word!". Как перелить это в С-строку (массив символов,заканчивающийся нулем)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 14:11 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 14:26 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Спасибо. P.S. (Тьфу,как все просто.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 14:31 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
(Тьфу,как все просто.) _bstr_t это врапер для BSTR т.е. это Unicode-строка - вы уверены что хотите ее в char* переделать? Можно ведь и в wchar_t* Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 14:54 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
стоп,стоп,на самом деле мне нужно в unsigned char передавать а там приведение типа strcpy(szTmp,(LPCSTR)Tmp);//ругается на второй параметр на самом деле у меня под new-массивы из unsigned char заделан довольно боьшой кусок проги и ковырять его очень не хотелось бы ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 15:06 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 15:22 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Действительно,работает. Спасибо,ZrenBy . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 15:35 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Н-н-нда-а, работает оно ,как же. Компилится,то оно компилится,в вот при освобождении памяти прога сваливается. ////////////////// _bstr_t bstrStr; unsigned char* p_ucValue; int length; bstrStr = "Hello"; length = bstrStr.length()+1; p_ucFieldValue = new unsigned char(length); strcpy((char*)p_ucValue,(LPCSTR)bstrStr); delete []p_ucValue;//вылет ////////////////////////////////// мне кажется что всё таки нельзя для strcpy втупую приводить указатель на char к указателю на unsigned char ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 19:14 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Извиняюсь,ошибся сам. p_ucFieldValue = new unsigned char [ length ] ; а не p_ucFieldValue = new unsigned char ( length ) ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 19:30 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Вот еще вариант Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 19:49 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Можно и так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2004, 17:38 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
ZrenBy Код: sql 1. 2. 3. 4. 5. А у меня на строке: strcpy(szTmp,(LPCSTR)Tmp); VS2013 Выдает ошибку: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. подскажите плиз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 16:33 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Разобрался сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 19:53 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, Вот этот макрос _CRT_SECURE_NO_WARNINGS определи в проекте (лучше всего), или если не знаешь, как, напиши в первой строке исходного кода (каждого модуля, если их несколько). Код: plaintext 1. Когда вырастишь, и поймёшь, зачем это, макрос можно будет удалить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 21:36 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
MasterZiv , спасибо за макрос! Есть вопрос по обмену данными между С++ и С# В разных способах результат один и тот же получаю Наступил на грабли в приведении типов в соответствие Чтобы не засорять тему можно в личку? Спасибо Модератор: чтобы не засорять тему, можно в новой теме. А "лички" на sql.ru никогда не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 20:41 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, с unicode сначала чуток разберись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 21:28 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
ZrenBy Код: sql 1. 2. 3. 4. 5. тогда уж лучше так Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2016, 21:23 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Уважаемые ГУРУ! Помогите пожалуйста разобраться. При использовании COM объекта (работа с WMI ) В качестве примера взял на сайте MSDN https://msdn.microsoft.com/en-us/library/aa390423(v=vs.85).aspx получаю результат - свойство объекта (строку с типом BSTR ). Строка содержит ожидаемое значение. Сохраняю его в _bstr_t resValue. Все это происходит в функции DLL (c++), которая получает параметром указатель на выделенный блок памяти необходимого размера из С# wchar_t* pResult Преобразовываю _bstr_t strBstr в wchar_t и записываю в выделенный блок памяти по переданному указателю. В вызывающем коде на C# получаю исключение, из DLL передается NULL А если я создам _bstr_t в ручную , (bstr_t strBstr = L"Test") то на стороне С# получаю нужную строку Подскажите пожалуйста на какие грабли я наступил. И как правильно преобразовать _bstr_t в данном случае Бьюсь уже неделю. Передавал строку и используя строковый буфер StringBuilder Пробовал передавать и непосредственно тип _bstr_t и в шарпе соответствующий код писал Результат один и тот же: "ручная" bstr_t строка передается, а bstr_t из COM объекта - нет, хотя при отладке pResult содержит данные Заранее всем благодарен С# Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вот такой вариант работает нормально C++ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А такой вариант дает исключение - NULL при передаче строки wchar_t* pResult C++ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2016, 21:58 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit Код: plaintext 1. подозреваю что resValue передаётся по значению, а не по ссылке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2016, 22:28 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, Вот функция int GetStringID(bstr_t & ID) { ...... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2016, 22:39 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, ещё раз и целиком как в соседнем топике (в спойлер заверни, чтоб глаз не мозолила) дьявол - в деталях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2016, 22:52 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил, Я все оформил в класс, и как консольное приложение все работает, все строки присутствуют Но как DLL, строки _bstr_t из COM не передаются С# Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. C++ Сама функция в DLL "C" __declspec(dllexport) int GetSomeText(wchar_t* pResult) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. HardWareData.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. HardWareData.cpp Функция GetWmiInfo(char strSQL[], wchar_t NamePrt[], bstr_t & resValue) Код: 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. 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. 149. 150. 151. 152. 153. Функция GetStringID(bstr_t & ID) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 12:05 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Потролить конечно проще, чем подсказать правильное решение :) Но и на том спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 21:55 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Arbit, видишь ли, у всех нас есть работа. только сейчас появилась возможность внимательно прочитать твой код да и решение предложить почище. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 22:33 |
|
||
|
_bstr_t преобразовать в строку
|
|||
|---|---|---|---|
|
#18+
Изопропил , Я благодарен за то что при всей занятости выделили на меня немного времени. Меня сбила с толку фраза: "в спойлер заверни, чтоб глаз не мозолила", подумал что надоедаю. :) Я благодарен за любую помощь и ценный совет:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2016, 01:03 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32477629&tid=2018399]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 182ms |

| 0 / 0 |
