簡體   English   中英

Delphi中的TStream警告

[英]TStream warning in delphi

我有以下代碼片段

 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是否正確?

任何意見表示贊賞。

TStream是抽象的,因此您不應實例化它(調用抽象方法會導致運行時錯誤)。 相反,您應該實例化一個非抽象的后代。 完成后,您應該Free實例。

例如:

var
  Stream: TStream;
begin
  try
    Stream := CreateBlobStream(FieldByName('Picture'), bmRead);
    try
      // ...
    finally
      Stream.Free;
    end;
  except 
    // handle exceptions
  end;
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM