type
T4x4LongWordRecord = record
case integer of
0:( lws:array [0..3] of LongWord);
1:(bs:array [0..16] of byte);
end;
T4x4LongWordRecord = record
case integer of
0:( lws:array [0..3] of LongWord);
1:(bs:array [0..16] of byte);
end;
T4x4LongWordRecord = record
case integer of
0:( lws:array [0..3] of LongWord);
1:(bs:array [0..15] of byte);
end;
//Tbytes 是动态数组,Type T4x4LongWordRecord = array[0..3] of LongWord; P4x4LongWordRecord = ^T4x4LongWordRecord;..
var Buf : TBytes;
LR4 : T4x4LongWordRecord;
begin
..Buf设置或者获取值
if Length(Buf)>=SizeOf(LR4) then begin//判断长度
LR4 := P4x4LongWordRecord(@Buf[0])^; //强转类型,如果明白动态数组的含义,可以用以下这句:
//LR4 := P4x4LongWordRecord(Buf)^;
end;
end;
2.为什么有的时候用move也可以将值复制到为一个类型中?
对这方面好晕,麻烦LS详细说明下下。
arr16LongWordRecord :T16LongWordRecord;
arr4x4LongWordRecord: T4x4LongWordRecord;
System.Move(arr4x4LongWordRecord[0],arr16LongWordRecord, SizeOf(LongWord)* 16);
2.为什么有的时候用move也可以将值复制到为一个类型中?
对这方面好晕,麻烦LS详细说明下下。
这样不必再分配内存空间,强制转换:告诉编译器要访问的元素大小。