关闭

做一个返回数组的函数 DELPHI

标签: delphiintegerfunctionstringdlldelete
2856人阅读 评论(0) 收藏 举报
分类:

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;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30128次
    • 积分:427
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:14篇
    • 译文:1篇
    • 评论:2条
    文章分类
    最新评论