Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Опять работа с 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]

Никто не знает как в длл массив передать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо