16,748
社区成员
发帖
与我相关
我的任务
分享
procedure swap(var i,j:integer);
var
i,j,tmp:integer;
begin
tmp:=i;
i:=j;
j:=tmp;
end;
procedure TForm1.btn4Click(Sender: TObject);
type
TByteArray = array of byte;
var
a1: array of byte;
a2: array of byte;
a3: array of byte; // a1,a2,a3不是同一类型,但是可以用TByteArray10进行cast
begin
TByteArray(a3) := TByteArray(a1);
TByteArray(a1) := TByteArray(a2);
TByteArray(a2) := TByteArray(a3);
end
而这样就不能编译
procedure Swap2( x, y:array of integer);
type
TIntegerArr = array of integer;
var
tmp : array of integer;
begin
TIntegerArr(tmp):=TIntegerArr(x);
TIntegerArr(x):=TIntegerArr(y);
TIntegerArr(y):=TIntegerArr(tmp);
end;
procedure Swap( x, y:array of integer);
type
TByteArray10 = array of integer;
var
a1, a2, a3: array of integer; // 这是同一类型
a4: array of integer; //
a5: array of integer; //
a6: array of integer; // 不是同一类型,但是可以用TByteArray10进行cast
begin
//可以这样直接赋值交换:
a3 := a1;
a1 := a2;
a2 := a3;
TByteArray10(a6) := TByteArray10(a4);
TByteArray10(a4) := TByteArray10(a5);
TByteArray10(x) := TByteArray10(a6); //这句编译时报错 : Invalid typecast
end;
type
TArrInt=array of integer;
procedure Swap(var x, y:array of integer);
var
tmp:array of integer;
begin
TArrInt(tmp):=TArrInt(x);
TArrInt(x):=TArrInt(y);
TArrInt(y):=TArrInt(tmp);