懒猫@朵

有一种世界观叫懒

做一个返回数组的函数 DELPHI

1.

type
  TArray = array of string;

procedure TrimChar(s:string;var sRet : TArray);
  function CountChar(s:string; c:char):integer;
  var
    i : integer;
  begin
    result := 0;
    for i := 1 to Length(s) do
      if s[i] = c then Inc(result);
  end;
var
  iPos : integer;
  i    : integer;

begin
  SetLength(sRet, CountChar(s, ',') + 1);
  iPos := Pos(',', s);
  i := 0;
  while iPos > 0 do
  begin
    sRet[i] := Copy(s, 1, iPos - 1);
    Delete(s, 1, iPos);
    iPos := Pos(',', s);
    Inc(i);
  end;
  sRet[i] := s;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  sA : TArray;
  s  : string;
  i  : integer;
begin
  s := 'abc,cd,mm,44';
  sA := nil;
  TrimChar(s, sA);
  for i := Low(sA) to High(sA) do
    Memo1.Lines.Add(sA[i]);
end;

 

2。

主程序中:
......
type
arr=array[0..32768] of double;
parr=^arr;
..............
function test(ptarr:parr):integer;stdcall;external project1.dll name 'DoM1';
procedure TForm1.Button1Click(Sender: TObject);
var
tarr:arr;
ptarr:parr;
i:integer;
begin
ptarr:=@tarr;
i:=test(ptarr); //test是DLL中的函数,我想把数组指针传进去,把所指向的数组内容在DLL中修改
edit1.Text:=floattostr(tarr[16]);
end;


动态链接库 project11.dll中:
......
type
arr=array[0..32768] of double;
parr=^arr;

function test( N:parr):integer;stdcall;
var testarray:arr;
i:integer;
begin
testarray:=N^;
for i := 0 to 32768 do
begin
testarray[i]:=i;
end;
result:=Round(N[16]);//测试用
end;

阅读更多
个人分类: DELPHI DELPHI
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

做一个返回数组的函数 DELPHI

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭