<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評(píng)論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    Delphi使用資源文件全攻略

    本文為原創(chuàng),如需轉(zhuǎn)載,請(qǐng)注明作者和出處,謝謝!

        在通常情況下使用delphi設(shè)計(jì)程序,都是將字符串、圖像等資源直接使用delphi提供的vcl控件加到*.dfm中,這樣做會(huì)合修改這些資源時(shí)帶來 不便,如果資源被多次引用,這些資源在程序啟動(dòng)時(shí)都被加載到內(nèi)存中,非常耗費(fèi)系統(tǒng)資源。因此,這就需要一種新的引用資源的文件:資源文件。資源文件就是將 一些資源,如字符串、圖像等信息進(jìn)行編譯,然后在程序中引用編譯后的資源文件,最后和源程序一起編譯生成可執(zhí)行文件。由于在資源文件中的資源是在需要時(shí)加 載,因此,比較節(jié)省系統(tǒng)資源,而且,如果要做國際化版本的系統(tǒng),只需要將資源文件一換,重新編譯即可。下面就詳細(xì)介紹delphi中資源文件的建立和使 用。

    一、建立資源文件

        資源文件的源文件是普通的文本文件,擴(kuò)展名是*.rc。將資源文件的內(nèi)容寫入文件后,調(diào)用brcc32.exe將其編譯后生成*.res文件。brcc32.exe在delphi的bin目錄中。

    二、字符串資源

        字符串資源實(shí)際上是將一個(gè)字符串和一個(gè)數(shù)字索引對(duì)應(yīng),在裝載字符串資源時(shí),需要提供這個(gè)字符串資源所對(duì)應(yīng)的數(shù)字索引。字符串資源文件以stringtable開頭,使用一對(duì)begin和and將資源定義括起來。 字符串資源的格式是:數(shù)字索引,"資源字符串"。
    string.rc文件內(nèi)容
    stringtable
    begin
    1001, "新建"
    1002, "保存"
    1003, "關(guān)閉"
    1004, "幫助"
    1005, "退出"
    1006, "資源文件測試"
    End
        然后調(diào)用命令:brcc32.exe string.rc ,生成string.res,最后在程序中加入{$R string.res}。以下所述的*.rc文件都需使用類似的方法進(jìn)行編譯和引用。

        在delphi中有兩種方法可以裝載字符串資源。
        1. 使用Windows API函數(shù)LoadString。使用這個(gè)函數(shù)需要定義一個(gè)char數(shù)組,調(diào)用的形式如下。

        LoadString(hInstance, 1001, buffer, 100); //100:buffer數(shù)組的最大長度,1001:數(shù)字索引

        2. 使用delphi自身的函數(shù)LoadStr。這個(gè)函數(shù)只需要一個(gè)數(shù)字索引就可得到相應(yīng)的字符串資源。調(diào)用的形式如下。

        button2.Caption := LoadStr(1002);

    三、Bitmap資源

        位圖資源的定義就相對(duì)簡單得多。每個(gè)位圖資源只需要定義三項(xiàng):位圖標(biāo)識(shí) 位圖類型 位圖文件名 (這三項(xiàng)中間用空格或tab隔開)其中位圖標(biāo)識(shí)和字符串資源的數(shù)字索引類似,只是位圖標(biāo)識(shí)可以是字符串。位圖類型是BITMAP。

        調(diào)用bitmap資源有兩種比較常用的方法。
        1. 使用bitmap的LoadFromResourceName方法。
        2. 使用windows API函數(shù)LoadBitmap。這種方法的代碼示例如下:
        bmp := TBitmap.Create ;
        bmp.Handle := LoadBitmap(Hinstance,'bmp');
        rect.Left := 0;
        rect.Top := 0;
        rect.Right := image2.Width;
        rect.Bottom := image2.Height;      
        rect1.Left := 0;                       
        rect1.Top := 0;
        rect1.Right := bmp.Width;
        rect1.Bottom := bmp.Height;
        image2.Canvas.CopyRect(rect, bmp.Canvas, rect1);
        第一種方法比較簡單,但如果是拉伸裝載時(shí),第二種方法效果比較好。也可用類似的方法裝載icon和cursor文件,其中裝載icon使用LoadIcon,裝載cursor使用LoadCursor。

    四、Jpeg資源

        裝載Jpeg資源沒有Windows API,但可以使用delphi提供的TResourceStream類。在定義資源文件時(shí),資源類型使用RCDATA。示例代碼如下:
       jpg := TJpegImage.Create ;
       rstream := TResourceStream.Create(Hinstance, 'jpg', RT_RCDATA) ;
       jpg.LoadFromStream (rstream) ;
       image3.Picture.Bitmap.Assign (jpg);

    五、裝載任意文件

        資源文件中不僅可以存儲(chǔ)已知類型的資源,如字符串、bitmap、jpeg等,還可以存儲(chǔ)任意類型的文件。除了字符串,其它類型的資源文件的格式類似,只 是在資源類型上有所變化。除了已知的資源類型外,可以自定義資源類型。如jpeg資源可以不用RCDATA,而用JPEG,但在調(diào)用時(shí)需要做如下處理。
    rstream := TResourceStream.Create(Hinstance, 'jpg1', 'JPEG') ;

    六、從其它程序裝載資源

        在上述的例子中的資源都是從當(dāng)前的exe中裝載,但有些時(shí)候需要從另外的exe或dll,而不是自身裝載資源。對(duì)于這種需求只要在上述例子中將Hinstance改為LoadLibrary(exe或dll名)即可。
      rstream := TResourceStream.Create(LoadLibrary('project1.exe'), 'jpg1', 'JPEG') ;
      在裝載后,可以使用TResourceStream的SaveToFile將資源保存成文件,或做其它處理。





    Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺(tái)灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2008-05-10 19:19 銀河使者 閱讀(667) 評(píng)論(0)  編輯  收藏 所屬分類: delphi 原創(chuàng)

    主站蜘蛛池模板: 亚洲国产最大av| 国产精品亚洲片在线| 亚洲人成77777在线观看网| 18禁止看的免费污网站| 亚洲国产日韩一区高清在线| 久久aa毛片免费播放嗯啊| 日本亚洲欧洲免费天堂午夜看片女人员 | 国产精品久久亚洲不卡动漫| 国产成人yy免费视频| 亚洲一区二区观看播放| 日韩在线天堂免费观看 | 亚洲综合无码一区二区痴汉| 青青草国产免费久久久下载| 337p日本欧洲亚洲大胆人人| 亚洲国产天堂久久久久久| 日批视频网址免费观看| 久久亚洲国产精品五月天| 91精品免费国产高清在线| 亚洲日本VA中文字幕久久道具| 国产猛烈高潮尖叫视频免费| 国产精品1024在线永久免费| 亚洲bt加勒比一区二区| 久久久久久国产精品免费免费| 亚洲国产精品无码久久| 亚洲中文字幕无码专区| **一级毛片免费完整视| 亚洲av第一网站久章草| 亚洲精品无码不卡在线播放HE| 日本最新免费网站| 羞羞漫画页面免费入口欢迎你 | 免费中文熟妇在线影片 | 亚洲欧洲美洲无码精品VA| 永久免费在线观看视频| 日日摸日日碰夜夜爽亚洲| 亚洲乱码精品久久久久..| 妻子5免费完整高清电视| 日韩免费在线中文字幕| 1区1区3区4区产品亚洲| 午夜亚洲福利在线老司机| 67194国产精品免费观看| 国产亚洲精品仙踪林在线播放|