![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прием массива в DLL.... [D5, Win95/98]
$Hic0 © (2002-05-31 12:10:00)День добрый!
Мне необходимо передавать в DLL для обработки динамический массив вещественных чисел. Я пишу:
library Gauss;
uses
SysUtils,
Classes,
Dialogs;
{$R *.RES}
Procedure Init(n:byte;A:array of Real); stdcall; export;
Begin
ShowMessage(FloatToStr(a[1])); //<---- Здесь компилатор воет что не определен тип массива :(
End;
Exports
Init index 1 name "InitGauss";
end.
Да... это двумерный массив :)
ShowMessage засунул просто для проверки :)
Только начал ковырять DLL-технологию, не судите строго :)
Заранее спасибо!
$HiC0 (2002-05-31 15:25:00) [1]Спасибо! Я тут ковыряюсь мучаюсь :)) Заглядываю на форум а столько всего, пасиба, я до много правда сам доковылял :) А в коде в самомо деле ошибка была :) Это просто я не углядел :). Пасиба. Вы настоящие друзья! :)
SPeller (2002-05-31 14:52:00) [2]Попробуй передать указатель на первый элемент и размерность. Тут и шаремем не нужен.
S@shka (2002-05-31 13:40:00) [3]ShareMem !!!!!!!!!!!!!!
Freezer (2002-05-31 13:05:00) [4]В твоем случае, я бы еще передавал размерность массива, т.к. он динамический и декларацию процедуры сделал след. образом...
type
TArr: array of array of Real;
procedure Init(const A: TArr; X, Y: Integer);
Виктор Щербаков (2002-05-31 12:51:00) [5]В секции uses модуль ShareMem должен быть на первом месте
в длл и хост-приложении, если передаешь дин. массивы или строки.
sunwheel (2002-05-31 12:46:00) [6]Не совсем ясно почему двумерный массив определяется как array of Real, но не важно. Попробуй сделать так:
type
TA1 : Array of Real;
TA2 : Array of TA1;
Procedure Init(n:byte;A:TA2); stdcall; export;
Все должно работать.
Sasha9 (2002-05-31 12:43:00) [7]
> Да... это двумерный массив :)
?????????????? вообще-то двумерный выглядит так:A: Array of Array of Real;
может ты чё путаешь с индексом массива, там нумерация с нуля
я попробовал без dll-ки и у меня всё пошло(влом с dll-кой возиться, но если ооочень нужно скажи я попробую)