2013-02-01 73 views
4

當我嘗試運行下面簡單的代碼序列中,我得到了Abstract Error錯誤消息:爲什麼在使用TStream類時會出現「抽象錯誤」?

type 
    TForm1 = class(TForm) 
    Image1: TImage; 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    ImageStream: TStream; 
begin 
    ImageStream := TStream.Create; 
    Image1.Picture.Bitmap.SaveToStream(ImageStream); 
    ... 
end; 

我需要提取的TBitmap稍後處理的流...我在做什麼錯?

+5

你可能已經避免了這種情況,因爲它正在注意編譯器警告實例化一個抽象類。切勿忽略編譯器警告。 –

回答

5

TStream class是一個抽象類,是所有流的基礎。

T流是基類類型,可以從讀取或寫入各種存儲介質,如磁盤文件,動態存儲器,等等流對象。

使用專門的流對象來讀取,寫入或複製存儲在特定介質中的信息。

您可能需要使用TMemoryStreamTFileStream,其中,顧名思義,存儲在內存中的數據流內容或系統文件。

procedure TForm1.Button1Click(Sender: TObject); 
var 
    ImageStream: TMemoryStream; 
begin 
    ImageStream := TMemoryStream.Create; 
    try 
    Image1.Picture.Bitmap.SaveToStream(ImageStream); 
    ... 
    finally 
    ImageStream.Free; 
    end; 
end; 
+2

忘了,像tstrings和TStringlist一樣:-( – user1769184

+0

是的,類似的東西。 – jachguate

相關問題