亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 052.htm

?? delphi編程
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第二十章 開發Delphi對象式數據管理功能(二)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第二十章 開發Delphi對象式數據管理功能(二)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第二十章 開發Delphi對象式數據管理功能(二)">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%"  bgcolor="#e0e0e0"><strong><A HREF="053.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="051.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>

<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第二十章 開發Delphi對象式數據管理功能(二)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<font face="Arial"><p>20.1.6 TResourceStream</font><font face="宋體" lang="ZH-CN">對象 </p>
<p>  </font><font face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象是另一類</font><font
face="Arial">MemoryStream</font><font face="宋體" lang="ZH-CN">對象,它提供對</font><font
face="Arial">Windows </font><font face="宋體" lang="ZH-CN">應用程序資源的訪問,因此稱它為資源流。</font><font
face="Arial">TResourceSream</font><font face="宋體" lang="ZH-CN">也是從</font><font
face="Arial">TCustomMemoryStream </font><font face="宋體" lang="ZH-CN">繼承的。因此在</font><font
face="Arial">TCustomMemoryStream</font><font face="宋體" lang="ZH-CN">對象的基礎上,定義了與指定資源模塊或資源文件建立連接的構造方法,并且還覆蓋了</font><font
face="Arial">Write</font><font face="宋體" lang="ZH-CN">,以實現向資源文件中寫數據。</font><font
face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">下面介紹</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">的實現</p>
<p>  </font><font face="Arial">1. </font><font face="宋體" lang="ZH-CN">私有域</p>
<p>  </font><font face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">沒有定義新的屬性,但它在</font><font
face="Arial">private</font><font face="宋體" lang="ZH-CN">部分定義了兩個數據域</font><font
face="Arial">HResInfo</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">HGlobol</font><font
face="宋體" lang="ZH-CN">和一個私有方法</font><font face="Arial">Initialize</font><font
face="宋體" lang="ZH-CN">,它們的定義如下:</p>
<p> </p>
<p></font><font face="Arial">TResourceStream = class(TCustomMemoryStream)</p>
<p>private</p>
<p>HResInfo: HRSRC;</p>
<p>HGlobal: THandle;</p>
<p>procedure Initialize(Instance: THandle; Name, ResType: PChar);</p>
<p></font><font face="宋體" lang="ZH-CN">…</p>
<p></font><font face="Arial">end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  </font><font face="Arial">HRSRC</font><font face="宋體" lang="ZH-CN">是描述</font><font
face="Arial">Windows</font><font face="宋體" lang="ZH-CN">資源信息的結構句柄。</font><font
face="Arial">HGlobal</font><font face="宋體" lang="ZH-CN">變量代表資源所在模塊的句柄。如果操作的是應用程序資源,</font><font
face="Arial">HGlohal</font><font face="宋體" lang="ZH-CN">就代表</font><font
face="Arial">EXE</font><font face="宋體" lang="ZH-CN">程序的句柄;如果是動態鏈接庫(</font><font
face="Arial">DLL</font><font face="宋體" lang="ZH-CN">),則</font><font face="Arial">HGlobal
</font><font face="宋體" lang="ZH-CN">代表動態鏈接庫的句柄。</font><font
face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象使用這兩上變量訪問應用程序或動態鏈接庫中的資源。</p>
<p>  </font><font face="Arial">Initialize</font><font face="宋體" lang="ZH-CN">方法是</font><font
face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">對象內部使用的。它的構造方法</font><font
face="Arial">Create</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">CreateFromID</font><font
face="宋體" lang="ZH-CN">都是調用</font><font face="Arial">Initialize</font><font
face="宋體" lang="ZH-CN">方法完成對</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">的初始化。它的實現如下:</p>
<p> </p>
<p></font><font face="Arial">procedure TResourceStream.Initialize(Instance: THandle; Name,
ResType: PChar);</p>
<p> </p>
<p>procedure Error;</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">begin</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">raise EResNotFound.Create(FmtLoadStr(SResNotFound, [Name]));</p>
<p>end;</p>
<p> </p>
<p>begin</p>
<p>HResInfo := FindResource(Instance, Name, ResType);</p>
<p>if HResInfo = 0 then Error;</p>
<p>HGlobal := LoadResource(Instance, HResInfo);</p>
<p>if HGlobal = 0 then Error;</p>
<p>SetPointer(LockResource(HGlobal), SizeOfResource(Instance, HResInfo));</p>
<p>end;</p>
<p> </p>
<p></font><font face="宋體" lang="ZH-CN"> 該方法實現中,首先調用</font><font
face="Arial">Windows</font><font face="宋體" lang="ZH-CN">函數</font><font
face="Arial">FoundResource</font><font face="宋體" lang="ZH-CN">得到由參數</font><font
face="Arial">Instance</font><font face="宋體" lang="ZH-CN">指定的模塊中的名為</font><font
face="Arial">Name</font><font face="宋體" lang="ZH-CN">和類型為</font><font
face="Arial">ResType</font><font face="宋體" lang="ZH-CN">的資源,然后調用</font><font
face="Arial">LoadResource</font><font face="宋體" lang="ZH-CN">將資源調用內存,并返回該資源在內存中的句柄,最后,將該資源復制到</font><font
face="Arial">ResourceStream</font><font face="宋體" lang="ZH-CN">中。方法的</font><font
face="Arial">Instance</font><font face="宋體" lang="ZH-CN">參數代表要調用的資源所在的模塊句柄。模塊可以是可執行文件,也可以是動態鏈接庫。如果在讀取資源時沒在模塊中發現要找的資源則產生異常事件。</p>
<p>  </font><font face="Arial">2. </font><font face="宋體" lang="ZH-CN">構造方法</font><font
face="Arial">Create</font><font face="宋體" lang="ZH-CN">和</font><font face="Arial">CreateFromID</font><font
face="宋體" lang="ZH-CN"></p>
<p>  這兩個方法在實現上沒有大的不同。顧名思義,第一個方法是通過資源名構造</font><font
face="Arial">TResourceStream; </font><font face="宋體" lang="ZH-CN">第二個方法通過資源</font><font
face="Arial">ID</font><font face="宋體" lang="ZH-CN">構造</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">,而且在實現過程中,它們都調用了</font><font
face="Arial">Initialize</font><font face="宋體" lang="ZH-CN">方法。下面是它們的實現:</p>
<p> </p>
<p></font><font face="Arial">constructor TResourceStream.Create(Instance: THandle; const
ResName: string;</p>
<p>ResType: PChar);</p>
<p>begin</p>
<p>inherited Create;</p>
<p>Initialize(Instance, PChar(ResName), ResType);</p>
<p>end;</p>
<p> </p>
<p>constructor TResourceStream.CreateFromID(Instance: THandle; ResID: Integer;</p>
<p>ResType: PChar);</p>
<p>begin</p>
<p>inherited Create;</p>
<p>Initialize(Instance, PChar(ResID), ResType);</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  這兩個方法中都有</font><font face="Arial">Instance</font><font
face="宋體" lang="ZH-CN">參數,該參數值的含義在</font><font face="Arial">Insitialize</font><font
face="宋體" lang="ZH-CN">中介紹過。</p>
<p>  </font><font face="Arial">3. Write</font><font face="宋體" lang="ZH-CN">方法</p>
<p>  </font><font face="Arial">TResourceStream</font><font face="宋體" lang="ZH-CN">的</font><font
face="Arial">Write</font><font face="宋體" lang="ZH-CN">方法只完成一件事,就產生這個異常事件,其實現如下:</p>
<p> </p>
<p></font><font face="Arial">function TResourceStream.Write(const Buffer; Count: Longint):
Longint;</p>
<p>begin</p>
<p>raise EStreamError.CreateRes(SCantWriteResourceStreamError);</p>
<p>end; </p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  從方法實現中可以看到,</font><font face="Arial">TSourceStream</font><font
face="宋體" lang="ZH-CN">對象是不允許寫數據的。一旦往資源流中寫數據將產生異常事件。</p>
<p>  </font><font face="Arial">4. </font><font face="宋體" lang="ZH-CN">析構方法</font><font
face="Arial">Destroy</font><font face="宋體" lang="ZH-CN"></p>
<p>  該方法產生給資源解鎖,然后釋放該資源,最后調用繼承的</font><font
face="Arial">Destroy</font><font face="宋體" lang="ZH-CN">方法釋放</font><font
face="Arial">ResourceStream</font><font face="宋體" lang="ZH-CN">。其實現如下:</p>
<p> </p>
<p></font><font face="Arial">destructor TResourceStream.Destroy;</p>
<p>begin</font><font face="宋體" lang="ZH-CN"></p>
<p></font><font face="Arial">UnlockResource(HGlobal);</font><font face="宋體"
lang="ZH-CN"></p>
<p></font><font face="Arial">FreeResource(HResInfo);</p>
<p>inherited Destroy;</p>
<p>end;</p>
<p> </font><font face="宋體" lang="ZH-CN"></p>
<p>  回顧</font><font face="Arial">Initialize</font><font face="宋體" lang="ZH-CN">方法,我們不難發現:</p>
<p>  ●</font><font face="Arial"> ResourceStream</font><font face="宋體"
lang="ZH-CN">沒有額外地給資源重新分配內存,而是直接使用</font><font
face="Arial">HGlobal</font><font face="宋體" lang="ZH-CN">句柄所指</font><font
face="Arial"> </font><font face="宋體" lang="ZH-CN">的內存域</p>
<p>  ●</font><font face="Arial"> ResourceStream</font><font face="宋體"
lang="ZH-CN">中的資源在流的生存期,始終是</font><font face="Arial">Lock</font><font
face="宋體" lang="ZH-CN">狀態,因此要根據</font><font face="Arial">Windows </font><font
face="宋體" lang="ZH-CN">的內存使用規則合理安排</font><font face="Arial">ResourceStream</font><font
face="宋體" lang="ZH-CN">的使用</p>
<p>  ●</font><font face="Arial"> ResourceStream</font><font face="宋體"
lang="ZH-CN">只是用于訪問應用程序和動態鏈接庫中的資源的</p>
<p> </font><font face="Arial"></p>
<p></font><font face="宋體" lang="ZH-CN">在</font><font face="Arial">Classes</font><font
face="宋體" lang="ZH-CN">在單元中提供了</font><font face="Arial">InternalReadComponentRes</font><font
face="宋體" lang="ZH-CN">函數,該函數使用了</font><font face="Arial">TResourceStream</font><font
face="宋體" lang="ZH-CN">對象從</font><font face="Arial">Delphi</font><font
face="宋體" lang="ZH-CN">應用程序中讀取部件。</font><font face="Arial">Delphi</font><font
face="宋體" lang="ZH-CN">是將窗體和部件信息放在模塊資源的</font><font
face="Arial">RCDATA</font><font face="宋體" lang="ZH-CN">段的。</p>
<p> </font><font face="Arial"></p>
<p>20.1.7 TBlobStream</font><font face="宋體" lang="ZH-CN">對象</p>
<p> </p>
<p>  從</font><font face="Arial">Delphi </font><font face="宋體" lang="ZH-CN">數據庫開發平臺這個意義上說,</font><font
face="Arial">TBlobStream </font><font face="宋體" lang="ZH-CN">對象是個很重要的對象。</font><font
face="Arial">TBlobStream</font><font face="宋體" lang="ZH-CN">對象提供了修改</font><font
face="Arial">TBlobField</font><font face="宋體" lang="ZH-CN">、</font><font
face="Arial">TBytesField</font><font face="宋體" lang="ZH-CN">或</font><font
face="Arial">TVarBytesField</font><font face="宋體" lang="ZH-CN">中數據的技術。開發者可以象對待文件或流那樣在數據庫域中讀寫數據。</p>
<p>  傳統數據庫發展的一個重要趨向是往多媒體數據庫發展。目前比較著名和流行的數據庫都支持多媒體功能,多媒體數據存儲中的一大難點是數據結構不規則,數據量大。各大數據庫產品是采用</font><font
face="Arial">BLOB</font><font face="宋體" lang="ZH-CN">技術解決多媒體數據存儲中的問題。</font><font
face="Arial">Delphi</font><font face="宋體" lang="ZH-CN">的</font><font face="Arial">TBlobStream</font><font

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品黑人性xxxx| 欧美日韩国产综合一区二区三区 | 99精品视频在线免费观看| 成人动漫在线一区| 色综合视频在线观看| 欧美人xxxx| 国产视频一区二区在线观看| 亚洲欧美韩国综合色| 美女免费视频一区| 国产成人h网站| 欧美人动与zoxxxx乱| 欧美国产精品一区| 日韩国产高清在线| 色成年激情久久综合| 在线播放中文字幕一区| 国产精品视频一二三区| 免费高清视频精品| 欧美午夜精品一区二区三区| 久久久久亚洲蜜桃| 日本中文字幕一区二区视频 | 精品国产123| 亚洲午夜免费电影| 91伊人久久大香线蕉| 久久久三级国产网站| 国产另类ts人妖一区二区| 欧美三级在线播放| 亚洲国产一区视频| 欧美日韩视频在线第一区| 最新热久久免费视频| 成人18视频日本| 国产精品日韩精品欧美在线| 国产美女视频一区| 国产色一区二区| 紧缚捆绑精品一区二区| 日韩一区二区免费高清| 日本美女一区二区| 日韩免费一区二区三区在线播放| 日韩—二三区免费观看av| 欧美一区二区三区免费观看视频| 日韩在线播放一区二区| 欧美mv和日韩mv国产网站| 精品一区二区三区视频在线观看| 久久亚洲综合av| 成人国产一区二区三区精品| 一区二区三区在线影院| 欧美日韩成人综合天天影院| 久久99热这里只有精品| 欧美国产精品中文字幕| 91福利精品视频| 激情都市一区二区| 亚洲黄色免费网站| 国产喷白浆一区二区三区| 国产**成人网毛片九色| 久久欧美一区二区| 91在线精品一区二区| 日韩电影一二三区| 久久久美女艺术照精彩视频福利播放 | 亚洲女同ⅹxx女同tv| 日本黄色一区二区| 风间由美一区二区三区在线观看| 天天综合色天天综合| 国产精品乱人伦| 久久嫩草精品久久久精品| 日韩视频在线永久播放| 国产精品99久| 日韩国产欧美在线播放| 五月激情综合网| 亚洲一区二区三区四区的| 最新国产の精品合集bt伙计| 国产欧美日韩亚州综合| 久久精品亚洲精品国产欧美kt∨| 国产日韩视频一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 欧美私人免费视频| 91丨porny丨在线| 一本色道a无线码一区v| 欧美色电影在线| 精品日韩在线观看| 欧美精品久久一区| 欧美精品黑人性xxxx| 3d成人h动漫网站入口| 67194成人在线观看| 91精品国产综合久久婷婷香蕉| 欧美日韩国产美女| 91麻豆精品国产91久久久久久久久| 精品视频在线看| 制服丝袜中文字幕一区| 日韩精品一区二| 欧美国产精品中文字幕| 成人免费在线观看入口| 有坂深雪av一区二区精品| 亚洲成人一二三| 五月天激情综合| 国产福利一区二区三区在线视频| 国产精品一区二区久久精品爱涩| www.亚洲精品| 精品日韩在线一区| 亚洲一区二区三区在线| 欧美伊人精品成人久久综合97 | 亚洲日本中文字幕区| 美女一区二区三区在线观看| 国产精品99久久不卡二区| 欧美日韩黄色一区二区| 国产婷婷色一区二区三区| 亚洲午夜一区二区| proumb性欧美在线观看| 91精品国产91综合久久蜜臀| 国产精品福利一区| 国产乱人伦精品一区二区在线观看| 91福利国产精品| 国产精品国产自产拍高清av| 久久精品国产久精国产| 在线播放一区二区三区| 亚洲三级在线播放| 国产河南妇女毛片精品久久久| 欧美人狂配大交3d怪物一区| 亚洲欧美电影院| 色呦呦国产精品| 亚洲欧美日韩国产综合| 国产高清成人在线| 国产精品视频观看| 国产乱人伦偷精品视频不卡| 欧美电影免费观看高清完整版在| 日韩精品久久理论片| 欧美电影免费观看高清完整版在线观看 | 综合亚洲深深色噜噜狠狠网站| 国产制服丝袜一区| 国产精品国产三级国产普通话99| 国产精品亚洲午夜一区二区三区| 日韩一区二区在线观看视频| 五月天激情综合| 精品88久久久久88久久久| 久久99久久久久久久久久久| 精品捆绑美女sm三区| 成年人网站91| 亚洲免费观看在线视频| 欧美日韩精品一二三区| 老司机精品视频一区二区三区| 精品美女在线播放| av亚洲精华国产精华| 亚洲尤物视频在线| 久久久美女艺术照精彩视频福利播放| 国产成人综合在线播放| 亚洲国产综合在线| 久久免费午夜影院| 欧美午夜不卡视频| 懂色av一区二区夜夜嗨| 亚欧色一区w666天堂| 国产婷婷色一区二区三区在线| 欧美亚一区二区| 大白屁股一区二区视频| 午夜精品一区在线观看| 中文字幕va一区二区三区| 91精品视频网| 欧美性猛交一区二区三区精品| 91网上在线视频| 成人综合在线视频| 国产精品中文欧美| 美日韩一区二区三区| 亚洲成a人片在线观看中文| 亚洲欧美国产高清| 综合分类小说区另类春色亚洲小说欧美 | 欧美精品久久天天躁| 色综合天天性综合| 国产传媒久久文化传媒| 国产一区二区主播在线| 美女视频黄 久久| 蜜桃久久久久久| 精品一区二区三区在线播放| 久久国产精品区| 日韩av网站免费在线| 午夜精品久久久久久久久久久| 亚洲 欧美综合在线网络| 婷婷成人激情在线网| 亚洲一区二区三区爽爽爽爽爽| 亚洲精品国产无天堂网2021| 亚洲一区二区视频在线观看| 一区二区三区国产| 免费人成网站在线观看欧美高清| 另类小说色综合网站| 风间由美中文字幕在线看视频国产欧美 | 99re免费视频精品全部| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美天堂一区二区三区| 欧美群妇大交群的观看方式| 日韩欧美国产综合| 中文字幕在线不卡视频| 三级在线观看一区二区| 成人久久18免费网站麻豆| 在线观看日韩国产| 精品国产一区二区三区久久久蜜月| 久久久久久久久免费| 亚洲一区中文在线| 国产美女精品人人做人人爽| 在线视频国产一区| 国产人妖乱国产精品人妖| 日韩电影在线免费看| 色婷婷久久一区二区三区麻豆| 2020国产精品久久精品美国| 亚洲第一精品在线|