Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 17:45   #1
Istrafiloff
Пользователь
 
Аватар для Istrafiloff
 
Регистрация: 05.07.2011
Сообщений: 33
Печаль Массивы Си и Дельфи

Всем привет. В дельфи есть массив следующего вида:
Код:
type MyAr = array of PChar;
И его нужно передать в функцию из dll, написанной на Си. Длл'ка самописная. Она должна выделить память под массив и записать в него данные. Я делаю так:
Код:
__declspec(dllexport) int f(char ***c);
...
// Внутри функции выделяем память и записываем данные
*c = malloc(10*sizeof(char*));
int i;
for (i=0; i<10; i++) {
  (*c)[i] = malloc(4);
  strcpy((*c)[i], "abc");
}
код упрощен для наглядности.
В дельфи же работаю так:
Код:
function f(var c: MyAr): Integer; cdecl; external 'liba.dll';
...
var ar: MyAr;
...
f(ar);
Это почти работает. Данные записываются куда надо, но есть нюанс.
Если выделять память под массив в дельфи, используя setLength, то в дебаггере видно, что в массиве столько элементов, сколько задали. Если же память выделяет длл'ка, то в дебаггере виден мусор.
Собственно, вопрос такой: как добиться такого же поведения в языке Си?
Цитата:
Читайте книги. Некоторые из них специально для этого написаны
Istrafiloff вне форума Ответить с цитированием
Старый 17.12.2013, 17:59   #2
Istrafiloff
Пользователь
 
Аватар для Istrafiloff
 
Регистрация: 05.07.2011
Сообщений: 33
По умолчанию

Да и в целом, вопрос сводится к следующему: Как правильно передать по ссылке массив строк из дельфи в сишную dll'ку?
Сдается мне, в текущем подходе вылазит что-то нехорошее, из-за чего приложение время от времени вылетает с ошибкой. Но ничего лучше я не придумал. Да и не нагуглил =(
Цитата:
Читайте книги. Некоторые из них специально для этого написаны
Istrafiloff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы в дельфи dearkato Помощь студентам 3 17.10.2011 18:39
Дельфи 7. Массивы Ан-ня Помощь студентам 4 09.05.2011 11:41
Массивы, дельфи консольная. ArsGo Помощь студентам 0 12.10.2010 22:26
Массивы-Дельфи qwerra Помощь студентам 6 25.06.2009 19:10
массивы 1 задач (дельфи 7) MyaSnIKs Помощь студентам 15 17.03.2009 05:54