TStream warning in delphi
I have the following code snippet
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;
I have a problem understanding the initialisation of bs variable.
If I dont initialize it , a but obvious warning i get.
Variable 'bs' might not have been initialized.
Now if I do it as the commented part i.e.
I get the following warning.
Constructing instance of 'TStream' containing abstract method 'TStream.Read' Constructing instance of 'TStream' containing abstract method 'TStream.Write'
and finally it works totally fine if I use
Am I Doing it correct by assigning it to Nil?
Any views appreciated.
TStream is abstract so you shouldn't instantiate it (calling an abstract method causes a runtime error). Instead, you should instantiate a non-abstract descendant. When you're done you should Free the instance.
var Stream: TStream; begin try Stream := CreateBlobStream(FieldByName('Picture'), bmRead); try // ... finally Stream.Free; end; except // handle exceptions end; end;