那位兄弟给个用动态数组做为参数的函数,并能够在函数中改变数组个数的例子和调用方法? (50分)

  • 主题发起人 主题发起人 delnew
  • 开始时间 开始时间
D

delnew

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢。。。
 
function maxInt(arrint:array of integer): integer;
var
i: integer;
begin
result := 0;
for i:= low(arrint) to high(arrint) do
if result < arrint then
result := arrint;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
showmessagefmt('%d', [maxInt([1,2,3])]);
end;
 
我想在函数外面定义一个动态数组,在函数里面动态改变该数组的大小,能吗?
 
可以,但可能要这样写,未测试,参考
var
arrint:array of integer


function maxInt( var arrint:array of integer): integer;
 
function maxInt( var arrint:array of integer): integer

begin
setlength(arrint,10)
//编译是错的啊

end;
 
type
TinD=array of integer ;
function maxInt( var arrint:TinD): integer

begin
setlength(arrint,10)

end;
 
找上面写不对啊。
我也不理解arrint:TinD代表什么意思,麻烦解释一下好吗?
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TArrInt = array of Integer;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure ChangeLength(var a: TArrInt
const Len: Integer);
begin
SetLength(a, Len)
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a: TArrInt;
begin
ChangeLength(a, 10);
ShowMessage(IntToStr(Length(a)))
end;

end.
 
非常感觉各位的帮助
to LeeChange, 为什么照你这样写就行了?
非要 type TArrInt = array of Integer;然后 不能够直接用吗?

 
直接用编译器会把两个不同地方的数组声明当做两种不同的类型.
 
哦。。非常感谢。
 
后退
顶部