XE6 - 如何将TStringStream内容转换为TStream?

时间:2016-02-05 14:30:14

标签: delphi

我使用以下代码将TStringStream转换为TStream。但是当我尝试将TStringStream的内容复制到TStream时会出错。

我似乎犯了一些非常明显的错误,但我无法抓住它。

我的代码:

procedure TfrmMain2.Button1Click(Sender: TObject);
var
  SS:TStringStream;
  S, S2:TStream;
  PhotoStr: String;
begin
  PhotoStr := 'Hello World, Testing: /9j/4AAQSkZJRgABAQAAAQABAAD//' +
     'gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2NjIp' +
     'LCBxdWFsaXR5ID0gODUK/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJ' +
     'DBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e';

  SS := TStringStream.Create(PhotoStr);
  S := TStream.Create();
  S.CopyFrom(SS, SS.Size);  //<= This line gives error
end;

我得到的错误信息是:...类EWriteError,消息“Stream write error”。

我不知道为什么会收到此错误。

1 个答案:

答案 0 :(得分:5)

您正在创建一个TStream的实例,它是一个抽象类。您不能直接实例化TStream。始终实例化一个后代类,例如TFileStreamTMemoryStream等。