Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как мне написать API-ф-цию чтоб возвращала строку.
|
|||
|---|---|---|---|
|
#18+
Изопропилтебе рассказать, что такое переполнение буфера или сам нагуглишь? Спасибо, не нужно :) За небрежность C кода извиняюсь. И malloc и free для string здесь, конечно же, были бы уместны. И не нужно рассказывать про то, что Strncpy сама не допускает переполнения, а VB, в отличие от C, сам за собой подчищает память, кроме объектных переменных, конечно (не наш случай). А со стороны VB, если посмотрите, разумные для примера меры приняты. Если бы я делал для себя, то передавал бы из VB в DLL и/или обратно только указатель на начало строки, чтобы исключить преобразования из 2 байтных в однобайтные массивы и обратно. Подробнее написал там: 14519739 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 01:34 |
|
||
|
Как мне написать API-ф-цию чтоб возвращала строку.
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Для получения crash с кодом предложенным White Owl выполнить этот код вполне достаточно для указанных двух случаев: 1) NULL 2) lenth > nMaxCount- 1 1) NULL Вы так горячо спорили про этот самый NULL. Но ни один из вас даже намеком не обмолвился что нельзя делать strlen (NULL) и именно эта строчка и дает crash Проверяйте, Код: plaintext 1. 2. 3. этого например достаточно чтоб вылететь в мир иной Надо хотя бы ЭТО проверять. Код: plaintext 1. 2. 3. 2) lenth > nMaxCount- 1 Что касается strncpy _s то что бы там не было в документациях, при конструкции Код: plaintext 1. она извините ругается МАТОМ а не ошибкой в errno_t rc как видимо следует из документации. А вот вариант Код: plaintext 1. очень даже проходной с этой точки зрения. Компилятор чего-то там бурчит, но ведь компилирует, и программа дух не испускает. Честно говоря к чертям этот nMaxCount, толку от него никакого, да и он нуль-терминаторов честно говоря тоже, length то известна, мусор по-любому отсекается на уровне приложения. Посему вот так в самый раз: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: vbnet 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. ИзопропилДмитрий77, в случае возврата BSTR нет никакой нужды в передаче длины строки и прочих танцев с бубном с буфером Да, спасибо. Я оценил наконец. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. Черт, никогда ранее не видел чтобы API ф-ция в VB6 ВОЗВРАЩАЛА As String Круто. ZVI, спасибо за поддержку. Как мне все это надоело. Оставлю наверно свой вариант из второго поста. Вполне себе рабочий вариант такой и уже вставлен в проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 04:42 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38319798&tid=2020106]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 275ms |

| 0 / 0 |
