freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第二十章 開發(fā)delphi對(duì)象式數(shù)據(jù)管理功能(五)-文庫(kù)吧

2025-08-02 15:44 本頁(yè)面


【正文】 是個(gè)遞歸過(guò)程,用于將 DFM 文件中的每一個(gè)部件轉(zhuǎn)化為文本形式。因?yàn)橛捎诓考膿碛嘘P(guān)系,所以部件成嵌套結(jié)構(gòu),采用遞歸是最好的方式: procedure ConvertObject。 begin ConvertHeader。 Inc(NestingLevel)。 while not do ConvertProperty。 。 while not do ConvertObject。 。 Dec(NestingLevel)。 WriteIndent。 WriteStr(39。end39。1310)。 end。 NestStingLevel 變量表示部件的嵌套層次。 WriteIndent 是寫入每一行起始字符前的空格, ConvertHeader 過(guò)程是處理部件 的繼承標(biāo)志信息。轉(zhuǎn)換成的頭信息文本有兩種形式。 Inherited TestForm1: TTestForm[2] 或者: Object TestForm1: TTestForm 前者是 ffInherited 和 ffChildPos 置位,后面是都沒置位。 ConvertProperty 過(guò)程用于轉(zhuǎn)化屬性。 procedure ConvertProperty。 begin WriteIndent。 WriteStr()。 WriteStr(39。 = 39。)。 ConvertValue。 WriteStr(1310)。 end。 WriteIndent 語(yǔ)句寫入屬性名前的空格, WriteStr()語(yǔ)句寫入屬性名 ConvertValue 過(guò)程根據(jù)屬性的類型將屬性值轉(zhuǎn)化為字符串,然后寫入流中。 ObjectTextToBinary 過(guò)程執(zhí)行的功能與 ObjectBinaryToText 相反,將 TXT文件轉(zhuǎn)換為二進(jìn)制流中的部件,而且只要 TXT 文件內(nèi)容的書寫符合 DFM 腳本語(yǔ)法, ObjectTextToBinary 可將任何程序生成的 TXT 文件轉(zhuǎn)換為 部件,這一功能也為 DFM 文件的動(dòng)態(tài)生成和編輯奠定了基礎(chǔ)。 ObjectTextToBinary 過(guò)程的主程序如下: procedure ObjectTextToBinary(Input, Output: TStream)。 var SaveSeparator: Char。 Parser: TParser。 Writer: TWriter。 ? begin Parser := (Input)。 SaveSeparator := DecimalSeparator。 DecimalSeparator := 39。.39。 try Writer := (Output, 4096)。 try 。 ConvertObject。 finally 。 end。 finally DecimalSeparator := SaveSeparator。 。 end。 end。 在程序流程和結(jié)構(gòu)上與 ObjectBinaryToText 差不多。 ConvertObject 也是個(gè)遞歸 過(guò)程: procedure ConvertObject。 var InheritedObject: Boolean。 begin InheritedObject := False。 if (39。INHERITED39。) then InheritedObject := True else (39。OBJECT39。)。 。 ConvertHeader(InheritedObject)。 while not (39。END39。) and not (39。OBJECT39。) and not (39。INHERITED39。) do ConvertProperty。 。 while not (39。END39。) do ConvertObject。 。 。 end。 DFM 文件與 DFM 腳本語(yǔ)言之間相互轉(zhuǎn)換的任務(wù)由 ObjectResourceToText和 ObjextTextToResource 兩個(gè)過(guò)程完成。 procedure ObjectResourceToText(Input, Output: TStream)。 begin 。 ObjectBinaryToText(Input, Output)。 end。 ObjectTextToResource 過(guò)程就比較復(fù)雜,因?yàn)?DFM 文件資源頭中要包含繼承標(biāo)志信息,因此在調(diào)用 ObjectTextToBinary 后,就讀取標(biāo)志信息,然后寫入資源頭。 procedure ObjectTextToResource(Input, Output: TStream)。 var Len: Byte。 Tmp: Longint。 MemoryStream: TMemoryStream。 MemorySize: Longint。 Header: array[0..79] of Char。 begin MemoryStream := 。 try ObjectTextToBinary(Input, MemoryStream)。 MemorySize := 。 FillChar(Header, SizeOf(Header), 0)。 := SizeOf(Longint)。 { Skip header } (Len, 1)。 if Len and $F0 = $F0 then begin if ffChildPos in TFilerFlags((Len and $F0)) then begin (Len, 1)。 case TValueType(Len) of vaInt8: Len := 1。 vaInt16: Len := 2。 vaInt32: Len := 4。 end。 (Tmp, Len)。 end。 (Len, 1)。 end。 (Header[3], Len)。 StrUpper(@Header[3])。 Byte((@Header[0])^) := $FF。 Word((@Header[1])^) := 10。 Word((@Header[Len + 4])^) := $1030。 Longint((@Header[Len + 6])^) := MemorySize。 (Header, Len + 10)。 (^, MemorySize)。 finally 。 end。 end。 動(dòng)態(tài) DFM 文件應(yīng)用揭秘 1. 動(dòng)態(tài) DFM 文件概述 動(dòng)態(tài) DFM 文件是相對(duì)于靜態(tài) DFM 文件而言。所謂靜態(tài) DFM 文件是指在 Delphi開發(fā)環(huán)境中設(shè)計(jì)的窗體文件。窗體的設(shè)計(jì)過(guò)程就是程序的編制過(guò)程。因此,動(dòng)態(tài)DFM 文件就是指在程序運(yùn)行過(guò)程生成或存取的 DFM 文件。 動(dòng)態(tài) DFM 文件的創(chuàng)建和使用分別如下兩種情況: ● 在程序運(yùn)行過(guò)程中,由 Create 方法動(dòng)態(tài)生成窗體或部件,然后動(dòng)態(tài)生成其它部件插入其中生成 DFM 文件 ● 在 Delphi 開發(fā)環(huán)境中,設(shè)計(jì)生成 DFM 文件,然后用 DFM 文件存取 函數(shù),或者用 Stream 對(duì)象和 Filer 對(duì)象的方法,將 DFM 文件讀入內(nèi)存,進(jìn)行處理,最后又存入磁盤中 由 Delphi的窗體設(shè)計(jì)的常規(guī)方法生成的 DFM文件在程序運(yùn)行一開始就規(guī)定了部件的結(jié)構(gòu)。因?yàn)樵诖绑w設(shè)計(jì)過(guò)程中,窗體中的每個(gè)部件都在程序的對(duì)象聲明中定義了部件變量。這種固定的結(jié)構(gòu)雖然能方便應(yīng)用,但以犧牲靈活性為代價(jià)。 在 Delphi 應(yīng)用程序中有時(shí)需要在運(yùn)行過(guò)程中創(chuàng)建控制,然后將該控制插入另一個(gè)部件中。例如: procedure (Sender: Tobject)。 var Ctrl: TControl begin Ctrl := (Self)。 := 100。 := 100。 := 150。 := 20。 InsertControl(Ctrl)。 end。 動(dòng)態(tài)插入控制的優(yōu)點(diǎn)是可以在任何時(shí)刻、任意位置插入任意數(shù)量的任何類型的控制。因?yàn)閼?yīng)用程序需求在很多情況下是在程序運(yùn)行中才知道的,所以動(dòng)態(tài)插入控制就顯得很重要。而且在很多情況下,需要保存這些界面 元素,留待程序再次調(diào)用。例如應(yīng)用程序界面的定制、系統(tǒng)狀態(tài)的保存、對(duì)話框的保存等。這時(shí)生成動(dòng)態(tài) DFM 文件是最佳選擇。 動(dòng)態(tài)插入控制的不足之處是在插入控制前,無(wú)法直觀地看到控制的大小、風(fēng)格、位置等,也就是動(dòng)態(tài)插入控制的過(guò)程
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1