delphi怎么创建动态的十六进制二维数组?
初学编程,请各位大神指教
procedure TForm1.Button1Click(Sender: TObject);
var
data : array [0..14] of byte;
begin
data[0..14] := ($0E,$12,$FF,$FF,$00,$0E,$13,$FF,$FF,$00,$FE,$FE,$FE,$FE,$2A);
end
怎么就出错了...另外问一下怎么让这个数组以第一列都是OE组成一个二维数组?
[解决办法]
var
a: array[0..14] of Byte= ($0E,$12,$FF,$FF,$00,$0E,$13,$FF,$FF,$00,$FE,$FE,$FE,$FE,$2A)
写到全局变量
a: array[0..1,0..14] of Byte= (($0E,$12,$FF,$FF,$00,$0E,$13,$FF,$FF,$00,$FE,$FE,$FE,$FE,$2A),
($0E,$12,$FF,$FF,$00,$0E,$13,$FF,$FF,$00,$FE,$FE,$FE,$FE,$2A)) ;
多维的这样写2组。
[解决办法]
setlength
move
[解决办法]
变量类型是事先定义好的,不能中途再改变
再定义一个2维数组变量吧,可以定义成动态的数组,动态2维数组这样定义:
//i X j二维数组
type TArr = array of array of string;
var Arr:TArr;
SetLength(Arr,i,j);
或者:
var Arr:array of array of string;
SetLength(Arr,i);
for k:=Low(Arr) to High(Arr) do
SetLength(Arr[k],j);
[解决办法]
不同数据结构的数据赋值 我喜欢用record 来做
如
type
Ptest=^TTest;
TTest=packed record
case Integer of
1:(buf1:array[0..14*3]of byte);
2:(buf2:array[0..1,0..14] of Byte);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
datas:array of Byte;
I:Integer;
T:Ptest;
iPos:Integer;
begin
SetLength(datas,1024*1024);
iPos:=0;
while iPos<Length(datas) do
begin
T := @datas[iPos];
iPos:=iPos+sizeof(ttest);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
P:PChar;
bufsize:Integer;
I:Integer;
T:Ptest;
iPos:Integer;
begin
iPos:=0;
while iPos<bufsize do
begin
T := Ptest(P);
P:=P+sizeof(ttest);
end;
end;
当然也可以直接通指针来操作
[解决办法]
procedure TForm1.Button1Click(Sender: TObject);var data : array [0..14] of byte= ($0E,$12,$FF,$FF,$00,$0E,$13,$FF,$FF,$00,$FE,$FE,$FE,$FE,$2A);begin data[0]:=$0E;end