我使用以下代码将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”。
我不知道为什么会收到此错误。
答案 0 :(得分:5)
您正在创建一个TStream
的实例,它是一个抽象类。您不能直接实例化TStream
。始终实例化一个后代类,例如TFileStream
,TMemoryStream
等。