zoukankan      html  css  js  c++  java
  • Delphi 中字符串资源的定义与使用

    字符串的存储在应用程序中是独立的,应用程序只有在使用资源时载入,使用完之后清
    除,从而节省内存,同时字符串也可以用于翻译,一些汉化软件都利用了字符串。编辑的字
    符串放在一个文本文件中,可以使用Delphi中的:File-〉New-〉Text,编辑字符串文件,字
    符串文件的格式如下:

      stringtable
      begin
      1,“book“
      2,“apple“
      3,“desk“
      4,“pen“
      5,“computer“
      end

      编辑完字符串文件后,选择Save as,注意要将文件类型改为资源编译文件(.RC),这还不是资源文件,它还必须经过编译才能成为资源文件(.RES)。编译命令为Dos提示符下的BRCC32,其路径为:D:Program FilesBorlandDelphi4Binrcc32.exe;例如上面的字符串资源编译文件名为:StrRes.rc,在DOS提示符下输入:brcc32 mydirStrRes.rc;则编译后会生成一个名为:StrRes.res的资源文件,使用该文件即可访问字符串资源。具体使用见下例:

    unit teststr;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
     private
    count : integer; 
    public

     end;

    var
    Form1: TForm1;

    implementation

    { *.DFM}
    { StrRes.RES}

    const
    wordcount = 5;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    strword : string;
    begin
    if count > wordcount then
    begin
    count := 1;
    end;
    strword := LoadStr(count);
    label1.Caption := strword;
    count := count + 1;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    label1.Caption := LoadStr(1);
    count := 2;
    end;

    end.

    程序中常量wordcount用来记录字符串资源文件中字符串的数量,变量count用来记录显
    示的字符串编号。程序运行后单击Button1按钮,则将循环显示字符串资源文件中的每一个字
    符串。

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    另一篇文章

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    不同于其它资源,字符串资源不能直接编辑,需要先按格式编制一个文本文件,再用程
    序将其编译成资源文件。下面用一个简单的例子来说明。首先用文本编辑器编一个文件lb.rc,
    其内容如下:

    stringtable

    begin

    1,"开始"

    2,"退出"

    end

    然后,找到delphi的bin子目录下的brcc32.exe文件进行编译, 命令格式为: brcc32
    lb.rc,编译结束后即生成一个资源文件lb.res。要使用该资源文件,需要在单元文件imple
    mentation部分的开始处包括资源文件:<$R lb.res>。在本例中,上面的字符串用于给一个
    命令按钮更换caption设置, 使用的函数是windows api函数 loadstring,以下是使用实例:

    //在formcreat过程中:

    var
    txtcaption:array [0..255] of char;
    begin
    if loadstring(hinstance, 1, txtcaption, sizeof(txtcaption)) > 0 then
    begin
    btnstart.caption:=StrPas(txtcaption);
    end;
    end;

    //在btnstartclick过程中:

    var
    txtcaption:array [0..255] of char;
    begin
    if loadstring(hinstance, 2, txtcaption, sizeof(txtcaption)) > 0 then

    btnstart.caption:=strpas(txtcaption);

    end;

    这样就可以在程序运行时改变各种属性,而不需要在程序中出现字符串。如果使用另一
    个delphi函数loadstr,会显得更加简单:

    var
    txtcaption:string;
    begin
    txtcaption:=loadstr(2);
    if txtcaption <> '' then
    begin
    btnstart.caption:=txtcaption;
    end;
    end;

    或许大家可以从以上的过程中看出, 使用123来标识一个字符串有些简陋,也很容易出
    错,那么怎么办呢?我们可以采取像 c++ 中使用字符串的方法,为每个字符串预定义一个id,
    如:

    const

    idc-start=1;

    idc-exit=2;

    当然要把它放在一个unit里(类似于c++的.h文件) ,在使用的单元里再uses一下就
    可以了,这样应用感觉是不是很爽呢?

    txtcaption:=loadstr(idc-exit);

  • 相关阅读:
    三种构建器的使用
    java class file
    JVM知识(下)
    JVM知识(上)
    初识JMM
    nginx基础配置加基础实战演示
    GitHub中webhooks的使用
    redis sentinel介绍
    redis主从复制
    【开源】.net 分布式架构之监控平台
  • 原文地址:https://www.cnblogs.com/spiritofcloud/p/3978296.html
Copyright © 2011-2022 走看看