![]() |
|
![]() ![]() ![]() |
|
antur |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 11.7.2006 Где: Москва Репутация: нет Всего: нет |
Здравствуйте. Такая проблема:
Вызывается функция из подключаемой DLL, она возвращает AnsiString. Так вот после возвращения программа аварийно завершается. В чем тут дело?! |
|||
|
||||
pandrew |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 27.3.2006 Репутация: 3 Всего: 3 |
2. ошибка при вызове требуется детали: как описано в хедере, как вызываешь, где взял информацию (или это твои догадки) |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
это сделано? А вообще лучше не использовать в параметрах и результатах классы и структуры. Возвращай лучше char* |
|||
|
||||
pandrew |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 27.3.2006 Репутация: 3 Всего: 3 |
||||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 11 Всего: 146 |
тогда мож подойдет указатель на стринг передавать -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
antur |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 11.7.2006 Где: Москва Репутация: нет Всего: нет |
Про нотацию насчет BORLNDMM.DLL я и забыл
![]() Кстати, а тогда просто внутри DLL можно оперировать с AnsiString или тоже не хорошо. Яимею ввиду внутри использовать AnsiString, ну а возвращать потом AnsiString.c_str() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 11 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
так нельзя
так можно
Это сообщение отредактировал(а) Fazil6 - 15.11.2006, 14:03 |
||||||
|
|||||||
antur |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 11.7.2006 Где: Москва Репутация: нет Всего: нет |
Тогда снова непонятно... я возвращаю s.c_str(). Заметил, что работает нестабильно (то есь иногда все ОК, а иногда возвращает мусор, хотя внутри dll перед выходом проверяю массив символов и все в поряде).
Вопросы насчсет второго варианта (что так можно): 1. то есть я в кач-ве параметра передаю массив char *, куда и запишется результат.... но... 2. как я буду знать каким передавать параметр buf_size и что это за функция strnspy (не могу найти)?! |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
в том-то идело, что после выхода твой стринг удаляется, а ты используешь его буфер
ну выделяй под buf память с запасом. Ты ведь примерно знаешь, что тебе вернуть должны и оценить можешь какая должна быть длина. С колько выделил, столько и указал размер в buf_size. Функция во втором варианте, например возвращает реальную длину, которую хотела вернуть и можешь проверить все ли влезло в буфер. strncpy |
||||
|
|||||
antur |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 11.7.2006 Где: Москва Репутация: нет Всего: нет |
Спасибо за ценные указания)) Все теперь работает!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |