不行啊。报错:incompitable types array and tarr array的内容我必须在const里定义好 const arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1')); arr_Duty2:array[0..1, 0..5]
不行啊。报错:incompitable types array and tarr array的内容我必须在const里定义好 const arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1')); arr_Duty2:array[0..1, 0..5]const arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1')); arr_Duty2:array[0..1, 0..5] 改为 var arr_Duty1,arr_Duty2:Tarr2;在初始化时一次性设置好: i:=0; j:=0; arr_Duty1[i,j]:=''rb_Duty1'; inc(j); arr_Duty1[i,j]:=''grp_Duty1'; inc(j); inc(i); j:=0; arr_Duty1[i,j]:=''rb_Duty1'; inc(j); arr_Duty1[i,j]:=''grp_Duty1'; inc(j); ...
type arr_Duty1 = array [0 .. 1, 0 .. 1] of string; const arr1:arr_Duty1=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1')); function myFunc(var arr1: arr_Duty1): string; begin Result := Format('数组成员数:%d', [High(arr1)+1]); end;procedure TForm1.Button1Click(Sender: TObject); var sArr:arr_Duty1; begin ShowMessage(myFunc(sArr)); end;
Const arr_Duty1: array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1')); arr_Duty2: array[0..2, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1') , ('a','b'));type TConstStringList = array [0..0] of String; PConstStringList = ^TConstStringList;procedure Doit(aArray : PConstStringList; AllLen : integer); var i : integer; begin for i:=0 to AllLen-1 do ShowMessage(aArray^[i]); end;procedure TForm1.FormCreate(Sender: TObject); begin Doit(@arr_Duty1 , 4); Doit(@arr_Duty2 , 6); end; 无法获取长度,需要传递一个长度参数进去
为什么这么麻烦呢, 用结构体,然后再用结构体来定义数据。这样管理起来方便,看的也很清楚type tagDemo = record ID: string[255]; Name: string[255]; end; LPDemo = ^ tagDemo; var arrDemo: array of tagDemo;这样就象数组一样赋值了。
array的内容我必须在const里定义好
const
arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
arr_Duty2:array[0..1, 0..5]
array的内容我必须在const里定义好
const
arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
arr_Duty2:array[0..1, 0..5]const
arr_Duty1:array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
arr_Duty2:array[0..1, 0..5]
改为
var
arr_Duty1,arr_Duty2:Tarr2;在初始化时一次性设置好:
i:=0; j:=0;
arr_Duty1[i,j]:=''rb_Duty1'; inc(j);
arr_Duty1[i,j]:=''grp_Duty1'; inc(j);
inc(i); j:=0;
arr_Duty1[i,j]:=''rb_Duty1'; inc(j);
arr_Duty1[i,j]:=''grp_Duty1'; inc(j);
...
type
arr_Duty1 = array [0 .. 1, 0 .. 1] of string;
const
arr1:arr_Duty1=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
function myFunc(var arr1: arr_Duty1): string;
begin
Result := Format('数组成员数:%d', [High(arr1)+1]);
end;procedure TForm1.Button1Click(Sender: TObject);
var
sArr:arr_Duty1;
begin
ShowMessage(myFunc(sArr));
end;
arr_Duty1: array[0..1, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1'));
arr_Duty2: array[0..2, 0..1] of string=(('rb_Duty1','grp_Duty1'),('rb_Duty1','grp_Duty1') , ('a','b'));type
TConstStringList = array [0..0] of String;
PConstStringList = ^TConstStringList;procedure Doit(aArray : PConstStringList; AllLen : integer);
var
i : integer;
begin
for i:=0 to AllLen-1 do
ShowMessage(aArray^[i]);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Doit(@arr_Duty1 , 4);
Doit(@arr_Duty2 , 6);
end;
无法获取长度,需要传递一个长度参数进去
tagDemo = record
ID: string[255];
Name: string[255];
end; LPDemo = ^ tagDemo;
var
arrDemo: array of tagDemo;这样就象数组一样赋值了。
private
FName: string;
FID: string;
procedure SetID(const Value: string);
procedure SetName(const Value: string); protected public
constructor Create;
destructor Destroy; override; procedure Copy(ADemo: TDemo);
published
property ID: string read FID write SetID;
property Name: string read FName write SetName;
end;var
ObjList: TList; //用TList来保存创建的类,如果用D2010 可以使用泛型。TObjectList<T>