![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять работа с dll !!! [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Eugene_post © (2002-10-30 21:51:00)Люди !!! Помогите разобраться с dll. Необходимо в dll передать несколько массивов, затем произвести расчеты и передать другие массивы в программу ...
Eugene_post (2002-10-31 14:41:00) [1]Вот моя библиотека:
library Data;
uses
SysUtils,
Classes;
type
Goods=record
Numb:Integer;
InPrice:Double;
OnPrice:Double;
Quantity:Double;
Spros:Double;
PotokPrRozn:Double;
PotokPrOpt:Double;
B:Double;
OptPrice:Double;
OptQuantity:Double;
end;
{$R *.res}
function Kernel(var mas: Goods): Goods; stdcall;
begin
Result.B:=1+Sqr(X)-Ln(FullQuanity/Quantity);
Result.PotokPrRozn:=Quantity*((InPrice*(1+(OnPrice/100)))-InPrice);
Result.OptPrice:=((((InPrice*(1+(OnPrice/100))/(Sqr(X)+1))+InPrice)/InPrice)-1)*100;
Result.OptQuantity:=FullQuanity*Exp(Result.B-((InPrice*(1+(OnPrice/100))/(Sqr(X)+1))+InPrice)/(InPrice*(1+(OnPrice/100))/(Sqr(X)+1)));
end;
exports
Kernel;
end.
Fiend (2002-10-31 14:36:00) [2]Вот это надо прописать и в библиотеке
type
Goods=record
Numb:Integer;
InPrice:Double;
OnPrice:Double;
Quantity:Double;
Spros:Double;
PotokPrRozn:Double;
PotokPrOpt:Double;
B:Double;
OptPrice:Double;
OptQuantity:Double;
end;
Чтобы библия твоя знала формат элементов массива
Fiend (2002-10-31 14:24:00) [3]procudure obr(var mas: arraygoods);
begin
обработал чё там тебе надо
end;
Eugene_post (2002-10-31 14:21:00) [4]Только у меня вот такой массив:
type
Goods=record
Numb:Integer;
InPrice:Double;
OnPrice:Double;
Quantity:Double;
Spros:Double;
PotokPrRozn:Double;
PotokPrOpt:Double;
B:Double;
OptPrice:Double;
OptQuantity:Double;
end;
var
ArrayGoods: Array of Goods;
мне нужно его передать в dll, в момент передачи будут известны только некоторые поля, а в dll считаются другие поля, а затем его нужно передать обратно в прогр.
Fiend (2002-10-31 14:13:00) [5]определи функцию в бибиотеке
function obr(mas: array[1..10] of byte):array[1..5] of string;
begin
обработал чё там тебе надо
end;
при вызове соответственно в параметрах передаш массив, а после того как эта суперфункция отработает получишь в результате другой массив
Eugene_post (2002-10-30 22:39:00) [6]Никто не знает как в длл массив передать?