Показать сообщение отдельно
  #2  
Старый 23.03.2008, 17:34
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Имя массива в Pascal - это фактически указатель на данные массива (примерно так же, как "длинные" строки AnsiString). Просто компилятор предоставляет нам удобный синтаксис для работы с такими указателями - выделяет и освобождает память самостоятельно.

Если я правильно понял вопрос, вы возвращаете массив из функции, которая расположена DLL? Если так, то и данные массива тоже расположены в сегменте данных DLL, а вы на самом деле возвращаете указатель на них. Пока DLL загружена - все нормально, но когда вы ее выгружаете, сегмент данных DLL освобождается, отсюда вероятнее всего и ошибка.

Чтобы избежать ошибки нужно не присваивать возвращаемое значение, а копировать массив, возвращаемый функцией в массив, который объявлен у вас в программе: Move(Source, Dest, Count);
Ответить с цитированием