![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| lnix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Столкнулся с проблемой передачи массива через параметры из dll в приложение написанное на VC++ 2008.
Суть в следующем: при передаче массива типа TypeArray = arrat[0..1023] of double все работает замечательно. При передача массива типа TypeArray = array of Double ничего не передается (размерность массива устанавливается в dll). Принимающий массив в программе имеет ту-же размерность что и возвращаемый из dll. Как обойти это ограничение? Заранее благодарен. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
array of Double - это автоматический объект, на подобии vector, только проще, поэтому передавать его можно только как статический массив, да и то следить за тем, чтобы в программе которая его передала оставалась хотя бы одна ссылка него. Т.е. передавать адрес первого элемента. Дело в том, что у статического массива адрес переменной массива совпадает с адресом первого элемента. У array of Double это не так, поэтому если нужно передавать его как статический то только @a[0]. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lnix |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
А где можно углубить свои знания по поводу размещения в памяти объектов и т.д. и т.п.
Можете посоветовать литераруту? Добавлено через 5 минут и 56 секунд Вот пример процедуры для возврата
возможно я туплю но что-то не получается Добавлено через 9 минут и 11 секунд да вот еще
|
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
lnix, так что эта функция вызывается из экзешником из Dll?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lnix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Да функция вызывается exe из dll
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
lnix, такой прототип функции невозможно описать в exe на MSVC . Потому что у него нет соответствия типу array of Double; А второе, что разные менеджеры памяти.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lnix |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Приблизительно к такому же выводу я и пришел, хотя теплилась надежда... маленькая совсем...
Очень признателен. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
lnix, но есть соответствие типу ^array[0..0] of Double. Это double** . Но тогда память в делфи нужно будет выделять при помощи LocalAlloc HeapAlloc.
Добавлено через 2 минуты и 40 секунд В делфи вызываем GetProcessHeap и получаем дескриптор кучи приложения. Его передаем в HeapAlloc и выделяем память. В вижуалке для освобождения вызываем HeapFree. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |