做一个返回数组的函数 DELPHI

转载 2006年06月05日 12:05:00

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;

做一个返回数组的函数(例子)

  • zgqtxwd
  • zgqtxwd
  • 2008年04月30日 13:02
  • 109

delphi与变长参数——开放数组(1)

与C/C++不同,Delphi中是通过可变类型(TVarRec)的开放数组来指定变长参数的。其实这里已经不能称“变长参数”了,因为实际上只传递了一个参数,只是该参数是由多个基础类型数据构成的一个开放数...
  • tht2009
  • tht2009
  • 2011年11月30日 15:48
  • 6271

delphi中数组的下标

动态数组和组件TList的继承类都是下标是从0开始的! string类型的字符数组是从1开始的 但自定义的就不是了 例如type a=array [1..20] of char; ...
  • luo809976897
  • luo809976897
  • 2014年08月26日 18:21
  • 542

Delphi数组

Delphi数组
  • shuaihj
  • shuaihj
  • 2011年01月09日 22:25
  • 3100

Delphi - 数组 详解

首先我们要知道什么是数组?数组是一堆相同特性数据的一个集合,也就是每个元素的类型必须是一样的,当然在其他一些弱语法的语言里面,数组的元素可以千奇百怪.  例子: 1 2 3 4 ...
  • wozengcong
  • wozengcong
  • 2013年12月31日 16:19
  • 2030

Delphi中的数组类型

数组可以使Object Pascal所拥有的任何数据类型,数组是一些数值的简单集合。 var   MyArray: array[0..4] of Integer;        { 声明一个数组包括5...
  • zang141588761
  • zang141588761
  • 2016年05月13日 15:23
  • 1989

数组下标使用0起始的理由

虽然delphi提供了可以自定数组起始下标的值,但还是建议使用0,理由:1、windows、linux api以及delphi vcl许多 地方都假设 数组下标从0开始;2、动态数组必须从0开始,所以...
  • Avan_Lau
  • Avan_Lau
  • 2009年12月26日 16:48
  • 1089

Delphi之动态数组(整理)

传统的Pascal 语言其数组大小是预先确定的,当你用数组结构声明数据类型时,你必须指定数组元素的个数。 专业程序员也许知道些许动态数组的实现技术,一般是采用指针,用手工分配并释放所需的内存。 D...
  • sforiz
  • sforiz
  • 2011年09月07日 11:41
  • 3473

Delphi - 数组 详解

首先我们要知道什么是数组?数组是一堆相同特性数据的一个集合,也就是每个元素的类型必须是一样的,当然在其他一些弱语法的语言里面,数组的元素可以千奇百怪.  例子: 1 2 3 4 ...
  • wozengcong
  • wozengcong
  • 2013年12月31日 16:19
  • 2030

第6章创建函数-----------(向函数传递数组、从函数返回数组)

6.4数组变量与函数 6.4.1向函数传递数组          向脚本函数传递数组变量。如果试图将数组变量作为单个参数传递,是无法正常工作的。操作实例如下:         #!/bin/...
  • henni_719
  • henni_719
  • 2016年12月21日 12:03
  • 1529
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:做一个返回数组的函数 DELPHI
举报原因:
原因补充:

(最多只允许输入30个字)