Name

Resourcestring Keyword

Syntax

resourcestring Name = String; ... ;

Description

A resourcestring declaration is similar to a const declaration for a string, except that the string value is stored in a string table resource. You use the Name in your code the same way you would use any string-type constant. The compiler replaces the string constant with a call to LoadResString to load the resource at runtime.

Tips and Tricks

  • Use resourcestring declarations for any string that can be localized: error messages, prompts, and so on. This is especially important if you are writing components or other third-party software. You should expect your component to be used in an application that requires localization, and plan ahead. Delphi automatically loads the string from the locale-specific resource DLL, if one is available.

  • If you create a resourcestring that is used as a format string (say, for the SysUtils.Format function), always include position specifiers. This helps the translator who might need to rearrange the order of the parameters when translating the string to a foreign language.

  • Delphi assigns the resource identifiers automatically. This means you can use resourcestrings in any unit without worrying about conflicts of resource identifiers. It also means that the resource identifiers can change every time you rebuild the project.

  • The address of a resourcestring is a PResStringRec pointer, which you can use at runtime to obtain the resource identifier.

Example

// Copy a file. 
procedure CopyFile(const SourceName, DestName: string);
resourcestring
  CantCopy = 'Cannot copy %0:s to %1:s: %2:s';
var
  SourceStream, DestStream: TFileStream;
begin
  SourceStream := nil;
  DestStream := nil;
  try
    try
      SourceStream := TFileStream.Create(SourceName, fmOpenRead);
      DestStream := TFileStream.Create(DestName, fmCreate);
      SourceStream.CopyFrom(DestStream);
    finally
      SourceStream.Free;
      DestStream.Free;
    end;
  except
    on E: Exception do
      raise Exception.CreateFmt(CantCopy,
                                [SourceName, DestName, E.Message]);
  end;
end;

See Also

Const Directive, LoadResString Function, PResStringRec Type, TResStringRec Type
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset