我有以下代码片段。
现在,如果我按照注释的部分进行操作,即:
我收到以下警告。
最后,如果我使用,它就完全正常工作了。
我将文本翻译为中文:
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;
我有一个问题,不理解bs
变量的初始化。
如果我不进行初始化,就会收到一个非常明显的警告。
Variable 'bs' might not have been initialized.
现在,如果我按照注释的部分进行操作,即:
bs:= TStream.create;
我收到以下警告。
Constructing instance of 'TStream' containing abstract method 'TStream.Read'
Constructing instance of 'TStream' containing abstract method 'TStream.Write'
最后,如果我使用,它就完全正常工作了。
bs:=nil;
我将文本翻译为中文:
我通过将其分配给Nil
,这样做是正确的吗?
欢迎任何意见。
bs
在第12行仍将未初始化。由于Delphi编译器没有提供本地变量初始化的手段,这样的流程会导致异常。因此,您决定将其初始化为nil是完美的。 - OnTheFly