Работа с DLL

AkmaL96

Как передать два и более значение функции из DLL библиотеки в Форму?
3 ответа

AkmaL96

так же как и из обычной функции
function Func(const A: integer; var B: integer; var C: word);
в данном примере В и С - переменные, в которые можно записать значения, полученные в результате работы функции, которая находится в DLL


AkmaL96

Это как передать, а выводить как? Я так попробовал, но выдает ошибку там где стоит стрелки..
function DiskDrive(var a,b:string):string; stdcall; external 'DiskDrive.dll';
а дальше..
procedure TForm1.FormCreate(Sender: TObject);
var a,b:string;
begin
 -->StringGrid1.Cells[0,1]:=DiskDrive(a);
 -->StringGrid1.Cells[0,2]:=DiskDrive(b);
end;


AkmaL96

function Func(const A: integer; var B: integer; var C: word);
Это как передать, а выводить как?
ключевым словом var помечатся переменная, передаваемая в функцию по ссылке (че это значит, читай самостоятельно), т.е. ее значение можно менять в теле функции. таким образом, вызвав функцию и передав ей переменную, находящуюся ВНЕ функции, можно в эту переменную записать результат, полученный при работе функции. примерописание функции
function MultiSqr(var A: integer; var B: integer): integer;
begin
  A:= Sqr(A);
  B:= Sqr(B);
  Result:= A + B;
end;
использование
procedure TForm1.Button1Click(Sender: TObject);
var
  A,B,Summ: integer;
begin
  // возвести в квадрат два числа, а также возвратить их сумму
  A:= 3;
  B:= 4;
  Summ:= MultiSqr(A,B);
  // результаты
  // Summ = 25
  // А = 9
  // В = 16
end;
понятно? значение переменных, помеченных словом var, можно менять внутри функции