请教TMemoryStream用法
我用TMemoryStream读取一个文件,要提取其中的字符串
比如
TM.Position:=12;
我要读取 12-15(4个字节)之间的字符串, 不知道怎么多
如果是
Tm.Read(BufferStr,4); 这样得到的东西部正确
只有用本办法
str:='';
for I := 0 to 3 do
begin
Tm.Read(BufferStr,1);
str:=str+BufferStr;
end;
似乎这样不对吧
另外 比如
读取 TM.Position:=32;
32-35(4个字节)的数字(00 00 80 00)
结果
Tm.Read(a,4);
读出来的是524288 也就是 00 80 00 00
好像也就是高低位的问题, 请问怎么正确读取
不知道我表达清楚没有
[解决办法]
str_From_12_TO_15: AnsiString;
stream: TMemoryStream;
...
SetString(str_From_12_TO_15, PAnsiChar(LongWord(stream.Memory) + 12), 15 - 12 + 1);
第二个问题,则跟数据的字节序有关。如果明显字节序相反,可以通过winsock2单元的ntohl进行转换。