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

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

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

    談笑有鴻儒,往來無白丁

    在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽
       在通常情況下使用delphi設計程序,都是將字符串、圖像等資源直接使用delphi提供的vcl控件加到*.dfm中,這樣做會合修改這些資源時帶來不便,如果資源被多次引用,這些資源在程序啟動時都被加載到內存中,非常耗費系統資源。因此,這就需要一種新的引用資源的文件:資源文件。資源文件就是將一些資源,如字符串、圖像等信息進行編譯,然后在程序中引用編譯后的資源文件,最后和源程序一起編譯生成可執行文件。由于在資源文件中的資源是在需要時加載,因此,比較節省系統資源,而且,如果要做國際化版本的系統,只需要將資源文件一換,重新編譯即可。下面就詳細介紹delphi中資源文件的建立和使用。

    一、建立資源文件

        資源文件的源文件是普通的文本文件,擴展名是*.rc。將資源文件的內容寫入文件后,調用brcc32.exe將其編譯后生成*.res文件。brcc32.exe在delphi的bin目錄中。

    二、字符串資源

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

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

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

        2. 使用delphi自身的函數LoadStr。這個函數只需要一個數字索引就可得到相應的字符串資源。調用的形式如下。

        button2.Caption := LoadStr(1002);

    三、Bitmap資源

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

        調用bitmap資源有兩種比較常用的方法。
        1. 使用bitmap的LoadFromResourceName方法。
        2. 使用windows API函數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);
        第一種方法比較簡單,但如果是拉伸裝載時,第二種方法效果比較好。也可用類似的方法裝載icon和cursor文件,其中裝載icon使用LoadIcon,裝載cursor使用LoadCursor。

    四、Jpeg資源

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

    五、裝載任意文件

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

    六、從其它程序裝載資源

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

    此文轉載,原文出處:
    http://www.tkk7.com/nokiaguy/archive/2008/05/10/199740.html
    posted on 2009-02-06 14:32 壞男孩 閱讀(2149) 評論(0)  編輯  收藏 所屬分類: DELPHI
    主站蜘蛛池模板: 欧亚精品一区三区免费| 成年女人免费视频播放体验区 | 亚洲人成在线影院| 污视频网站在线免费看| 亚洲综合国产一区二区三区| 未满十八私人高清免费影院| 亚洲Av综合色区无码专区桃色 | 97se亚洲综合在线| 野花香高清在线观看视频播放免费| 四虎影视在线永久免费看黄| 亚洲免费网站观看视频| 亚洲欭美日韩颜射在线二| 曰批全过程免费视频在线观看| 色吊丝免费观看网站| 人人狠狠综合久久亚洲高清| 美女被暴羞羞免费视频| 亚洲精品美女在线观看播放| 亚洲第一页日韩专区| 4虎1515hh永久免费| 一个人看的hd免费视频| 亚洲人成网站18禁止一区| 亚州免费一级毛片| 国产乱妇高清无乱码免费| 亚洲最大无码中文字幕| 在线观看国产情趣免费视频| 无码国产精品一区二区免费3p| 亚洲视频网站在线观看| 亚洲一区日韩高清中文字幕亚洲| 可以免费看黄的网站| 日本道免费精品一区二区| 国产亚洲漂亮白嫩美女在线| 亚洲精品国产电影| 处破痛哭A√18成年片免费| 久久久免费精品re6| 亚洲 暴爽 AV人人爽日日碰| 国产免费69成人精品视频| 在免费jizzjizz在线播| 亚洲精品无码久久久久牙蜜区| 4444亚洲国产成人精品| 日韩成人在线免费视频| 国产免费看JIZZ视频|