delphi 结构体数组 5
我用动态创建数组的方法在结构体里使用,然后用文件流进行读取,但是却读不了TTest=packedrecordpublicaT:arrayofByte;end;proced...
我用动态创建数组的方法在结构体里使用,然后用文件流进行读取,但是却读不了
TTest = packed record
public
aT: array of Byte;
end;
procedure Choose;
var
TMpStream: TFileStream;
aTest: TTest;
begin
TmpStream: =TFileStream.Create('d:\1.txt', fmopenread);(1.txt 2000字节)
setlength(aTest.aT, 10);
ZeroMemory(@aTest, SizeOf(aTest));
TmpStream.read(aTest.aT, 10); //这里读取不了
.......
end;
indy10 idudpserver控件,Delphi Xe2 环境下编译
直接手打在提问中的,可能有小错误,请忽略,3Q
求解答 展开
TTest = packed record
public
aT: array of Byte;
end;
procedure Choose;
var
TMpStream: TFileStream;
aTest: TTest;
begin
TmpStream: =TFileStream.Create('d:\1.txt', fmopenread);(1.txt 2000字节)
setlength(aTest.aT, 10);
ZeroMemory(@aTest, SizeOf(aTest));
TmpStream.read(aTest.aT, 10); //这里读取不了
.......
end;
indy10 idudpserver控件,Delphi Xe2 环境下编译
直接手打在提问中的,可能有小错误,请忽略,3Q
求解答 展开
3个回答
展开全部
用数组麻烦,而且你定义这么长的数组。很多时候用不完,浪费内存。直接用TList把结构体存入TList中就可以了,既不用浪费内存,又可以方便的使用TList提供的方法来管理你的结构体“数组”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
动态数组(aT: array of Byte;)的内存分配比较复杂,建议采用定长数组来写
追问
能说下吗
追答
也就是用类似
TTest = packed record
public
aT: array[0..2047] of Byte;//这里改成定长数组
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
流读取文件后,可能位置处于尾上。
TEMPSTREAM.POSTION:= 0;
再读试试
TEMPSTREAM.POSTION:= 0;
再读试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询