我现在有一个工程文件和一个DLL动态链接库(该DLL库功能是实现一个数组中的数字从小到大排序),在练习中(排序练习)用工程文件去调用该动态链接库,代码如下:我要解决的问题是有注明(1)(2)这两种,如何解决,求助各位,在线等。工程文件中:
unit Unit1;interface
  function sort(i, a: Integer): Integer; stdcall; external 'DLLDemo.dll';
var
  Form1: TForm1;
  i:integer;
  a:array[1..20] of integer;               //定义数组a
implementation{$R *.dfm}procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key=#13) and (edit1.Text <>'10000') then
  begin
    a[i+1]:=strtoint(edit1.Text);
    edit1.Text :='';
    i:=i+1;               //记录输入待排序数字的个数
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  a:=sort(i,a)  //我这样写是错的,不知道这里应该怎么写使得可以去调用dlldemo.dll    (1)        
end;end.
DLL链接库中:
library Dllmemo;uses
  SysUtils,
  Classes;{$R *.res}{实现数组排序}
function sort(count,arraya:integer):integer;stdcall  //形参接收数据,
var
  i,j,k,t:integer;
begin
  for i:=0 to count-2 do
  begin
    k:=i;
    for j:=i+1 to count-1 do
    begin
      if arraya[k]>arraya[j] k=j;                 //这里提示错误:Array type required    (2)
      if (k<>i) then
         begin
           t:=arraya[i];
           arraya[i]:=arraya[k];
           arraya[k]:=t;
         end;
    end;
  end;
end;exports sort;
begin
end.

解决方案 »

  1.   

    a:=sort(i,a)  //我这样写是错的,不知道这里应该怎么写使得可以去调用sort没有申明,(要先申明函数从哪个Dll得到)。
    if arraya[k]>arraya[j] k=j; ????
      

  2.   

    那个排序是选择排序法,语法上没有错,但就是arraya[k]>arraya[j] k=j;    //arraya是数组名                                                   提示错误:Array type required   不知怎么搞
    还有楼上的:a:=sort(i,a)  //我这样写是错的,不知道这里应该怎么写使得可以去调用sort没有申明,(要先申明函数从哪个Dll得到)。应该如何声明啊?
      

  3.   

    你是不是要:
               if arraya[k]>arraya[j]  then 
                 k=j;
      

  4.   

    看错了,你好想dll中的参数为:两个Integer,好像一个要为array of Integer吧。你试试,我也不太懂^_^