[3H]:将一块内存写成文件错(100分)

  • 主题发起人 主题发起人 3h
  • 开始时间 开始时间
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
//前面是做一些连接internet取文件信息的工作
//Len就是文件的总长度,放在IconFileBuf的缓存区里
GetMem(IconFileBuf, Len);
FS := TFileStream.Create('a.ico', fmCreate or fmOpenWrite);
If InternetReadFile(H_HTTP_OPEN, IconFileBuf, Len, dwRead) then
If dwRead > 0 then
FS.Write(IconFileBuf, dwRead);
FS.Free;
FreeMem(IconFileBuf);

从internet上用InternetReadFile读某个图标文件,通过查看当前内存的状态发现内容和长度均是正确的,
然后想将它写成一个文件a.ico,发现写后的文件内容是错误的,也就是和内存的那些内容不同!
真奇怪,究竟是什么原因呢?
 
我是不得已用流的啦,因为用其它方法试了后也得到错误的文件内容。
 
要这样: FS.Write(IconFileBuf^, dwRead);
注意 IconFileBuf^ ,有个小小的 ^ 号不能少
 
五体投地!
 
后退
顶部