Shi*_*h11 3 delphi initialization tstream
我有以下代码片段
Procedure TFrm.Retrieve(mystring : string);
var
bs : TStream;
...
begin
...
bs:=nil;
//bs:= TStream.create;
try
bs := CreateBlobStream(FieldByName('Picture'), bmRead);
finally
bs.Free;
end;
...
end;
Run Code Online (Sandbox Code Playgroud)
我在理解bs变量的初始化时遇到了问题.
如果我不初始化它,我得到一个明显的警告.
Variable 'bs' might not have been initialized.
Run Code Online (Sandbox Code Playgroud)
现在,如果我作为评论部分,即
bs:= TStream.create;
Run Code Online (Sandbox Code Playgroud)
我收到以下警告.
Constructing instance of 'TStream' containing abstract method 'TStream.Read'
Constructing instance of 'TStream' containing abstract method 'TStream.Write'
Run Code Online (Sandbox Code Playgroud)
最后,如果我使用它,它的工作完全正常
bs:=nil;
Run Code Online (Sandbox Code Playgroud)
我是通过分配来做到的 Nil吗?
任何观点赞赏.
Ond*_*lle 10
TStream是抽象的,所以你不应该实例化它(调用抽象方法会导致运行时错误).相反,您应该实例化一个非抽象的后代.当你完成后,你应该Free是实例.
例如:
var
Stream: TStream;
begin
try
Stream := CreateBlobStream(FieldByName('Picture'), bmRead);
try
// ...
finally
Stream.Free;
end;
except
// handle exceptions
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |