var  
  m_ChPic: array of Char;
  m_PChPic: PChar;
  m_Stream: TMemoryStream;
  m_JPG: TJpegImage;-------------------------------开始
  m_JPG := TJpegImage.Create;
   m_JPG.LoadFromFile('C:\tmp.jpg');
  m_Stream := TMemoryStream.Create;
  m_JPG.SaveToStream(m_Stream);
  m_JPG.Free;
  m_Stream.Position := 0;
  SetLength(m_ChPic, SizeOf(m_Stream));
  m_Stream.ReadBuffer(m_ChPic, m_Stream.Size);
  m_Stream.Free;
为什么ChPic老是空的,而且长度只有4呢?已经搞一个通宵了,哪里出错了呢?

解决方案 »

  1.   

    熬夜了吧楼主。。
    SetLength(m_ChPic, SizeOf(m_Stream));这句有问题,应该是SetLength(m_ChPic, m_Stream.Size);
      

  2.   

    还有m_Stream.ReadBuffer(m_ChPic, m_Stream.Size);改为m_Stream.WriteBuffer(m_ChPic, m_Stream.Size);因为只有WriteBuffer才是写缓冲区。。
      

  3.   

    还是不行,肯定是哪里没处理好
    不是m_Stream.WriteBuffer的问题
      

  4.   

    SetLength(m_ChPic, m_Stream.Size);
    m_Stream.ReadBuffer(Pointer(m_ChPic)^, m_Stream.Size);
      

  5.   

    还有建议你用array of byte储存。。哪有用字符数组储存二进制数据的???