Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Вниз

Получение указателя на масиив из dll на Delphi   Найти похожие ветки 

 
zux   (2002-04-27 21:47) [0]

Есть длл Написанная а Обжект Паскале
Вот пример экспортной фукнции

type Aint=array of Integer;
type PAint=^Aint;

function Test():PAint;stdcall;
var
asd:Aint;
begin
setLength(Aint,2);
asd[0]:=2;
asd[1]:=4;
Result:=@asd;
end;

теперь в С++
я делаю

typedef int *pint;
typedef pint (_stdcall *FTest)();
FTest Test;
HINSTANCE Main_dll;

Main_dll=LoadLibrary("Main.dll");
Test=FTest(GetProcAddress(Main_dll,"Test"));

pint p;
p=Test();//p-указатель на массив в длл приетом этот указетель
несодержит не каких данных а если и содержит то ето не данные а мусор

а вот если в длл поменять
type Aint=array of Integer; на
type Aint=array[0..2] of Integer;
ТОбиш как только меняем динамический масси на статический все нормально
Подскажите как заставить работать данный пример с динамическим массивом


 
Alx2   (2002-04-29 11:19) [1]

Динамические массивы - вещь специфичная Delphi. C++ не поймет. Делай статикой, либо "стандартными" типами данных, либо расковыривай у Delphi менеджер памяти и смотри как он с динамическими массивами работает. Либо используй свой тип данных со своей поддержкой.


 
Dimk   (2002-04-29 11:39) [2]

Ты возвращаешь из Test указатель на данные в стеке ( asd располагается в стеке! Даже если это динамический массив то в asd содержится указатель на ...). Это классический глюк.
Когда ты вернешься из процедуры - стек очистится asd с высокой вероятностью будет затерт. Сделай asd глобальным.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
1-39799
Sniffer
2002-04-28 18:12
2002.05.13
Cимплексный метод


14-39846
Ежик
2002-04-04 10:41
2002.05.13
Знатоки LINUX помогите плииз!


1-39712
Siliks
2002-04-25 02:17
2002.05.13
Добавление компонентов - NEED HELP!!!


1-39771
Vovchik
2002-04-28 13:12
2002.05.13
Хранение и изменение текстовых ресурсов в PE-файлах


7-39871
UniQ
2001-11-19 23:15
2002.05.13
Как работать с модемом из Delphi 5 (набор номера, приём звонка) ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский