Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 40
Благодарности: 19

Профиль | Отправить PM | Цитировать


Использовать Дельфовые типы при движении данных между ДЛЛ - крайне неправильный подход. Начиная с несовместимости с другими языками и кончая бяками типа той, что получили.
Надо использовать безопасные типы данных. Если требуется увеличивать что-то то память под увеличение надо выделять в вызывающей программе. Учитывайте, что хоть ДЛЛ и использует ту же область данных, что и вызывающая программа, менеджер памяти у нее другой.
Это же в полной мере относится и к передаче любых объектов: даже объекты казалось бы одного типа в ДЛЛ и вызывающей программе имеют по факту РАЗНЫЙ тип. И словить АВ можно в любой момент. Причем ошибка будет плавающей.
Числовые переменные возвращаются правильно так как они имеют строго заданный размер и под них не происходит дополнительное выделение памяти.
Для строк при передаче используйте pChar, pWideChar и т.п. При этом, память надо выделять заранее. Посмотрите правила вызова системных функций, которые в аргументах возвращают данные переменной длины.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:53, 21-03-2013 | #4