亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi的組件讀寫機制(一)

2019-11-18 18:35:23
字體:
來源:轉載
供稿:網友
 

Delphi的組件讀寫機制(一)

一、流式對象(Stream)和讀寫對象(Filer)的介紹
 在面向對象程序設計中,對象式數據管理占有很重要的地位。在Delphi中,對對象式數據管理的支持方式是其一大特色。
 Delphi是一個面向對象的可視化設計與面向對象的語言相結合的集成開發環境。Delphi的核心是組件。組件是對象的一種。Delphi應用程序完全是由組件來構造的,因此開發高性能的Delphi應用程序必然會涉及對象式數據管理技術。

 對象式數據管理包括兩方面的內容:
● 用對象來管理數據
● 對各類數據對象(包括對象和組件)的管理

 Delphi將對象式數據管理類歸結為Stream對象(Stream)和Filer對象(Filer),并將它們應用于可視組件類庫(VCL)的方方面面。它們提供了豐富的在內存、外存和Windows資源中管理對象的功能,
 Stream對象,又稱流式對象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的統稱。它們分別代表了在各種媒介上存儲數據的能力,它們將各種數據類型(包括對象和組件) 在內存、外存和數據庫字段中的管理操作抽象為對象方法,并且充分利用了面向對象技術的優點,應用程序可以相當容易地在各種Stream對象中拷貝數據。
 讀寫對象(Filer)包括TFiler對象、TReader對象和TWriter對象。TFiler對象是文件讀寫的基礎對象,在應用程序中使用的主要是TReader和TWriter。TReader和TWriter對象都直接從TFiler對象繼承。TFiler對象定義了Filer對象的基本屬性和方法。
  Filer對象主要完成兩大功能:
● 存取窗體文件和窗體文件中的組件
● 提供數據緩沖,加快數據讀寫操作

 為了對流式對象和讀寫對象有一個感性的認識,先來看一個例子。
a)寫文件
PRocedure TFomr1.WriteData (Sender: TObject); r;
Var
  FileStream:TFilestream;
  Mywriter:TWriter;
  i: integer
Begin
  FileStream:=TFilestream.create(‘c:/Test.txt’,fmopenwrite);//創建文件流對象
  Mywriter:=TWriter.create(FileStream,1024); //把Mywriter和FileStream聯系起來
  Mywriter. writelistbegin;  //寫入列表開始標志
  For i:=0 to Memo1.lines.count-1 do   
    Mywriter.writestring(memo1.lines[i]); //保存Memo組件中文本信息到文件中
  Mywriter.writelistend;          //寫入列表結束標志
  FileStream.seek(0,sofrombeginning); //文件流對象指針移到流起始位置
  Mywriter.free; //釋放Mywriter對象
  FileStream.free; //釋放FileStream對象
End;
 
b)讀文件
procedure TForm1.ReadData(Sender: TObject);
Var
  FileStream:TFilestream;
  Myreader:TReader;
Begin
  FileStream:=TFilestream.create(‘c:/Test.txt’,fmopenread);
  Myreader:=TRreader.create(FileStream,1024); //把Myreader和FileStream聯系起來
  Myreader.readlistbegin;  //把寫入的列表開始標志讀出來
  Memo1.lines.clear;  //清除Memo1組件的文本內容
  While not myreader.endoflist do //注意TReader的一個方法:endoflist
  Begin
    Memo1.lines.add(myreader.readstring); //把讀出的字符串加到Memo1組件中
  End;
  Myreader.readlistend; //把寫入的列表結束標志讀出來
  Myreader.free;  //釋放Myreader對象
  FileStream.free; //釋放FileStream對象
End;
 上面兩個過程,一個為寫過程,另一個為讀過程。寫過程通過TWriter,利用TFilestream把一個Memo中的內容(文本信息)存為一個保存在磁盤上的二進制文件。讀過程剛好和寫過程相反,通過TReader,利用TFilestream把二進制文件中的內容轉換為文本信息并顯示在Memo中。運行程序可以看到,讀過程忠實的把寫過程所保存的信息進行了還原。
 下圖描述了數據對象(包括對象和組件)、流式對象和讀寫對象之間的關系。
 
         圖(一)

 值得注意的是,讀寫對象如TFiler對象、TReader對象和TWriter對象等很少由應用程序編寫者進行直接的調用,它通常用來讀寫組件的狀態,它在讀寫組件機制中扮演著非常重要的角色。
對于流式對象Stream,很多參考資料上都有很詳細的介紹,而TFiler對象、TReader對象和TWriter對象特別是組件讀寫機制的參考資料則很少見,本文將通過對VCL原代碼的跟蹤而對組件讀寫機制進行剖析。

二、讀寫對象(Filer)與組件讀寫機制
 Filer對象主要用于存取Delphi的窗體文件和窗體文件中的組件,所以要清楚地理解Filer對象就要清楚Delphi 窗體文件(DFM文件)的結構。
  DFM文件是用于Delphi存儲窗體的。窗體是Delphi可視化程序設計的核心。窗體對應Delphi應用程序中的窗口,窗體中的可視組件對應窗口中的界面元素,非可視組件如TTimer和TOpenDialog,對應Delphi應用程序的某項功能。Delphi應用程序的設計實際上是以窗體的設計為中心。因此,DFM文件在Delphi應用設計中也占很重要的位置。窗體中的所有元素包括窗體自身的屬性都包含在DFM文件中。
  在Delphi應用程序窗口中,界面元素是按擁有關系相互聯系的,因此樹狀結構是最自然的表達形式;相應地,窗體中的組件也是按樹狀結構組織;對應在DFM文件中,也要表達這種關系。DFM文件在物理上,是以文本方式存儲的(在Delphi2.0版本以前是存儲為二進制文件的),在邏輯上則是以樹狀結構安排各組件的關系。從該文本中可以看清窗體的樹狀結構。下面是DFM文件的內容:
object Form1: TForm1
  Left = 197
  Top = 124
  ……
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 272
    ……
    Caption = 'Button1'
    TabOrder = 0
  end
  object Panel1: TPanel
    Left = 120
    ……
    Caption = 'Panel1'
    TabOrder = 1
    object CheckBox1: TCheckBox
      Left = 104
      ……
   Caption = 'CheckBox1'
      TabOrder = 0
    end
  end
end
 這個DFM文件就是TWriter通過流式對象Stream來生成的,當然這里還有一個二進制文件到文本信息文件的轉換過程,這個轉換過程不是本文要研究的對象,所以忽略這樣的一個過程。
 在程序開始運行的時候,TReader通過流式對象Stream來讀取窗體及組件,因為Delphi在編譯程序的時候,利用編譯指令{$R *.dfm}已經把DFM文件信息編譯到可執行文件中,因此TReader讀取的內容實際上是被編譯到可執行文件中的有關窗體和組件的信息。
 TReader和TWriter不僅能夠讀取和寫入Object Pascal中絕大部分標準數據類型,而且能夠讀寫List、Variant等高級類型,甚至能夠讀寫Perperties和Component。不過,TReader、TWriter自身實際上提供的功能很有限,大部分實際的工作是由TStream這個非常強大的類來完成的。也就是說TReader、TWriter實際上只是一個工具,它只是負責怎么去讀寫組件,至于具體的讀寫操作是由TStream來完成的。
 由于TFiler是TReader和TWriter的公共祖先類,因為要了解TReader和TWriter,還是先從TFiler開始。



上一篇:delphi一句話幫助

下一篇:Delphi的組件讀寫機制(三)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品国产三级国产专播精品人| 91久久精品久久国产性色也91| 亚洲精品国产美女| …久久精品99久久香蕉国产| 中文字幕成人精品久久不卡| 欧美成年人网站| 国产丝袜精品第一页| 欧洲亚洲免费在线| 国内精品久久久久久久久| 国产精品久久久久久久7电影| 高清一区二区三区日本久| 亚洲欧美制服第一页| 青青青国产精品一区二区| 国产成人精品视| 成人免费高清完整版在线观看| 91国产精品视频在线| 亚洲视频欧洲视频| 日本亚洲欧洲色α| 精品国产福利在线| 亚洲欧美成人精品| 日韩精品日韩在线观看| 国产成人在线亚洲欧美| 日韩成人高清在线| 久久久亚洲精品视频| 日韩av片免费在线观看| 日韩a**站在线观看| 热re99久久精品国产66热| 日韩亚洲综合在线| 欧美日韩激情小视频| 一区二区三区视频免费在线观看| 欧美成人激情在线| 国产成人精彩在线视频九色| 久久精视频免费在线久久完整在线看| 亚洲精品一区av在线播放| www.国产精品一二区| 国产99久久精品一区二区永久免费| 欧洲成人在线观看| 97精品免费视频| 午夜精品久久久久久久久久久久久| 2019日本中文字幕| 色偷偷综合社区| 久久91亚洲精品中文字幕奶水| 亚洲专区在线视频| 自拍偷拍亚洲欧美| 日韩av一区二区在线观看| 亚洲欧美在线播放| 色偷偷88888欧美精品久久久| 性日韩欧美在线视频| 国产日韩视频在线观看| 在线中文字幕日韩| 日韩欧亚中文在线| 国产女人18毛片水18精品| 久久av红桃一区二区小说| 国产精品入口免费视频一| 日韩在线观看你懂的| 亚洲免费成人av电影| 精品露脸国产偷人在视频| 日韩av免费在线观看| 亚洲欧美一区二区三区久久| 国产区精品在线观看| 国产精品久久久久久久av大片| 国产成人拍精品视频午夜网站| 97在线视频一区| 亚洲精品720p| 国产精品成人一区二区| 日本成人精品在线| 国产成+人+综合+亚洲欧洲| 成人免费视频在线观看超级碰| 国内精品久久久久久影视8| 中文字幕一精品亚洲无线一区| 成人a在线观看| 亚洲国内高清视频| 正在播放欧美一区| 色偷偷av亚洲男人的天堂| 国产视频丨精品|在线观看| 97精品国产97久久久久久春色| 性欧美暴力猛交69hd| 91精品视频在线播放| 国产精品久久久久av| 亚洲精品成人久久电影| 日韩国产在线播放| 国产日韩欧美夫妻视频在线观看| 中文字幕欧美日韩精品| 欧美多人爱爱视频网站| 欧美床上激情在线观看| 亚洲偷熟乱区亚洲香蕉av| www高清在线视频日韩欧美| 日本一区二区在线播放| 国产精品久久97| 久久精品一区中文字幕| 久久精品视频亚洲| 亚洲精美色品网站| 亚洲欧美综合精品久久成人| 亚洲精品久久久久久久久久久久久| 69av视频在线播放| 亚洲小视频在线观看| 国产欧美一区二区三区久久| 亚洲高清一二三区| 一区二区三区四区在线观看视频| 在线观看欧美日韩国产| 亚洲成人黄色在线观看| 国产精品jvid在线观看蜜臀| 亚洲国产精品成人va在线观看| 91精品国产九九九久久久亚洲| 欧美性猛交xxxxx免费看| 成人a视频在线观看| 国产精品美女呻吟| 91国语精品自产拍在线观看性色| 日韩国产高清视频在线| 视频直播国产精品| 高清在线视频日韩欧美| 亚洲一区亚洲二区亚洲三区| 国产欧美一区二区白浆黑人| 中文字幕日韩av电影| 日韩欧美成人区| 日韩女优人人人人射在线视频| 日韩成人性视频| 国产丝袜精品第一页| 永久免费看mv网站入口亚洲| 国产精品女人久久久久久| 精品毛片网大全| 91九色在线视频| 最近2019好看的中文字幕免费| 亚洲精品欧美一区二区三区| 欧美制服第一页| 91精品国产99久久久久久| 国产亚洲精品va在线观看| 国外视频精品毛片| 欧美成人在线影院| 中文字幕在线观看日韩| 国产日韩欧美在线视频观看| 26uuu日韩精品一区二区| 日韩电影免费观看中文字幕| 欧美成人精品在线观看| 欧美在线视频观看免费网站| 亚洲精品国产精品自产a区红杏吧| 欧美猛少妇色xxxxx| 日韩中文字幕免费视频| 成人午夜在线观看| 97香蕉久久夜色精品国产| 搡老女人一区二区三区视频tv| 欧美视频不卡中文| 少妇av一区二区三区| 国产一区二区香蕉| 亚洲精品视频久久| 亚洲一区免费网站| 国产精品视频免费观看www| 成人夜晚看av| 黄色一区二区在线| 欧美中文字幕在线观看| 国产精品丝袜视频| 精品久久久久久亚洲精品| 欧美电影院免费观看| 国产精品一区二区av影院萌芽| 日本一区二区三区在线播放| 欧美在线观看一区二区三区| 日韩av免费在线看| 国产精品ⅴa在线观看h| 国产精品第二页| 成人激情视频网| 亚洲伦理中文字幕| 久久久国产精品亚洲一区| 国内精品久久久久久中文字幕| 深夜福利亚洲导航|