首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oxygene中流到字节数组的转换

Oxygene中流到字节数组的转换
EN

Stack Overflow用户
提问于 2013-05-10 07:42:38
回答 2查看 1.3K关注 0票数 2

我正在尝试用这个遗留的Delphi Prism应用程序找到一条出路。我以前从未在Delphi Prism上工作过。

如何将Stream类型转换为Byte Array类型?请详细的代码将真正感谢,因为我没有德尔福棱镜的知识。

基本上,我想上传一个图像使用WCF服务,并希望通过字节数组的图像数据。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-10 08:52:57

选项1)如果您正在使用MemoryStream,则可以直接使用MemoryStream.ToArray方法。

选项2)如果您使用的是.Net 4,可以使用CopyTo方法将源流的内容复制到MemoryStream中,然后调用MemoryStream.ToArray函数。

就像这样

代码语言:javascript
复制
method TMyClass.StreamToByteArr(AStream: Stream): array of Byte;
begin
    using LStream: MemoryStream := new MemoryStream() do 
    begin
      AStream.CopyTo(LStream);
      exit(LStream.ToArray());
    end
end;

选项3)您正在使用旧版本的.Net,您可以编写一个自定义函数来从源流中提取数据,然后填充一个MemoryStream

代码语言:javascript
复制
method TMyClass.StreamToByteArr(AStream: Stream): array of Byte;
var 
  LBuffer: array of System.Byte;
  rbytes: System.Int32:=0;
begin
  LBuffer:=new System.Byte[1024];
  using LStream: MemoryStream := new MemoryStream() do 
  begin
    while true do 
    begin
      rbytes := AStream.Read(LBuffer, 0, LBuffer.Length);
      if rbytes>0 then
        LStream.Write(LBuffer, 0, rbytes)
      else
        break;
    end;
    exit(LStream.ToArray());
   end;
end;
票数 3
EN

Stack Overflow用户

发布于 2013-05-10 15:39:37

下面是一个使用文件流的示例(但这应该适用于任何类型的流):

代码语言:javascript
复制
class method ConsoleApp.Main;
begin
  var fs := new FileStream('SomeFileName.dat', FileMode.Open);
  var buffer := new Byte[fs.Length];
  fs.Read(buffer, 0, fs.Length);
end;

在第一行,我创建了一个文件流作为开始,这可以是你的流。然后,我创建一个带有流长度的字节数组。在第三行,我将流的内容复制到字节数组中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16472969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档