unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
mmo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function abc(aa: array of byte): integer;
var
i: integer;
begin
for i := 0 to high(aa) do
form1.mmo1.Lines.add(inttostr(aa[i]));
end;function cba(aa: array of char): integer;
var
i: integer;
begin
for i := 0 to high(aa) do
form1.mmo1.Lines.add(aa[i]);
end;procedure TForm1.FormCreate(Sender: TObject);
var
aa: array of byte;
ss: array of char;
i: integer;
begin
setlength(aa, 10);
setlength(ss, 10);
for i := 0 to 9 do
begin
aa[i] := i;
ss[i] := chr(i);
end;
abc(aa);
cba(ss); // Error: Array and dynamic array 为什么上一句通过, 这句不通过?
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
mmo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function abc(aa: array of byte): integer;
var
i: integer;
begin
for i := 0 to high(aa) do
form1.mmo1.Lines.add(inttostr(aa[i]));
end;function cba(aa: array of char): integer;
var
i: integer;
begin
for i := 0 to high(aa) do
form1.mmo1.Lines.add(aa[i]);
end;procedure TForm1.FormCreate(Sender: TObject);
var
aa: array of byte;
ss: array of char;
i: integer;
begin
setlength(aa, 10);
setlength(ss, 10);
for i := 0 to 9 do
begin
aa[i] := i;
ss[i] := chr(i);
end;
abc(aa);
cba(ss); // Error: Array and dynamic array 为什么上一句通过, 这句不通过?
end;end.
有一点需要记住,下面的函数声明,其参数类型并不是动太数组,而是普通数组。
function abc(aa: array of byte): integer;程序修改如下
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
type
arrByte = array of byte;
arrChar = array of char;
implementation{$R *.DFM}
function abc(aa: arrByte): integer;
var
i: integer;
begin
for i := 0 to high(aa) do
form1.memo1.Lines.add(inttostr(aa[i]));
end;function cba(aa: arrChar): integer;
var
i: integer;
begin
for i := 0 to high(aa) do
form1.memo1.Lines.add(aa[i]);
end;procedure TForm1.FormCreate(Sender: TObject);
var
aa: arrByte;
ss: arrChar;
i: integer;
begin
setlength(aa, 10);
setlength(ss, 10);
for i := 0 to 9 do
begin
aa[i] := i;
ss[i] := chr(i);
end;
abc(aa);
cba(ss);
end;end.
2.如果用CHAR类型的话,你可以这样定义:TYPE TDynamicCharArray= ARRAY OF CHAR,function cba(aa: TDynamicCharArray): integer;然后SS:TDynamicCharArray,这样就可以了,但是运行的时候TMEMO里面显示 的是空白,也就是说有了10行空白行.我想原因参见上面一条.