Delphi: скопируйте FileStream в MemoryStream

Я хочу скопировать часть FileStream к MemoryStream.

FileStream.Write(Pointer(MemoryStream)^, MemoryStream.Size);
FileStream.Read(Pointer(MemoryStream)^, count);

Это правильно? Это не работает на меня.

14
задан Andre Kampling 13 May 2019 в 09:56
поделиться

1 ответ

Вы должны Read () из FileStream в отдельный буфер, а затем Write () в MemoryStream, то есть:

var
  Buffer: PByte;

GetMem(Buffer, NumberOfBytes);
try
  FileStream.ReadBuffer(Buffer^, NumberOfBytes);
  MemoryStream.WriteBuffer(Buffer^, NumberOfBytes);
finally
  FreeMem(Buffer);
end;

Поскольку вы имеете дело с двумя объектами TStream, это будет проще использовать вместо этого метод TStream.CopyFrom (), например:

MemoryStream.CopyFrom(FileStream, NumberOfBytes);
19
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: