Resourcestring Keyword
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.
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 resourcestring
s 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.
// 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;