diff -r 51a74ef9ed63 -r ae94777fff8f Symbian3/SDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita --- a/Symbian3/SDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita Wed Mar 31 11:11:55 2010 +0100 +++ b/Symbian3/SDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita Fri Jun 11 12:39:03 2010 +0100 @@ -1,119 +1,119 @@ - - - - - -Reading -a String Resource

The simplest use of a resource file involves reading string resources -and interpreting the source data.

-

Resources are defined in terms of structs which are accessed and -read by the RResourceFile class, and interpreted by the TResourceReader. -An application may also use resources from multiple files simultaneously. -See Resource File examples for -more information.

Consider a sample resource file where a struct of -STRING is defined having a single member of type LTEXT:

// define structures -STRUCT STRING - { - LTEXT text; - } -// define resources -RESOURCE STRING hello - { - text=Bonjour tout le monde!; - } -
- - -Compile the resource file using the -resource compiler (rcomp) to generate an .rsc file -and an .rsg file. - - - .rsc file contains the resource data; this is -the resource file that must be referred to at run-time by the RResourceFile class -in the C++ code. - - - .rsg file is a generated - header file that contains #define statements -for each resource defined in the source file. In the resource file generated -here, the only resource is called hello and the generated -header file contains: -#define HELLO 1 -Note that the name in the generated header file is converted to upper -case. - - - - - #include the .rsg file in the -file containing the C++ code, to access the resource IDs generated by the -resource compiler. For example, for a project refered as ReadText, -this might be: -#include ReadText.rsg - - -Initialize the RResourceFile object in the C++ program, -specifying the name of the resource file: - -RResourceFile resourceFile; -resourceFile.OpenL( fsSession,_L( Z:\\system\\data\\ReadText.rsc ) ); -Note: To access the resource file contents, a session with the file -server must be started using an instance of RFs class. - - -Use one of the three functions (RResourceFile::AllocReadLC(), RResourceFile::AllocReadL() or RResourceFile::ReadL() to read a resource as shown in the following -code fragment: -HBufC8* dataBuffer = resourceFile.AllocReadLC( HELLO ); - - -Interpret the resource data using a TResourceReader object. -This provides access to the text string through a pointer descriptor as shown -in the following code fragment: - -TResourceReader theReader; -... -theReader.SetBuffer( datafBuffer ); -TPtrC textdata = reader.ReadTPtrC(); - - -

In this example, once the resource data is no longer needed, the -heap descriptor, dataBuffer, can be removed from the cleanup stack and destroyed -as shown in the code fragment:

CleanupStack::PopAndDestroy();

When -all operations on the resource file are complete, the resource file can be -closed using the RResourceFile::close() function as:

resourceFile.Close();
-Example

Consider a resource constructed -from the following definition.

RESOURCE ARRAY anarray -{ -items= - { - LBUF { txt="Esc"; }, - LBUF { txt="Enter"; }, - LBUF { txt="Tab"; }, - LBUF { txt="Del"; }, - LBUF { txt="Space"; } - }; -}

A TPtrC representing the second item can -be constructed using the ReadTPtrC() function. The example -simply takes the length of the text Enter:

// open the resource file -... -HBufC8* res = resourceFile.AllocReadLC( ANARRAY ); -TResourceReader theReader; -... -TInt len; -len = ( theReader.ReadTPtrC( 1,res ) ).Length(); // len == 5 -...
-
-Resource -files -Resource -file format -Resource -compilation + + + + + +Reading +a String Resource

The simplest use of a resource file involves reading string resources +and interpreting the source data.

+

Resources are defined in terms of structs which are accessed and +read by the RResourceFile class, and interpreted by the TResourceReader. +An application may also use resources from multiple files simultaneously. +See Resource File examples for +more information.

Consider a sample resource file where a struct of +STRING is defined having a single member of type LTEXT:

// define structures +STRUCT STRING + { + LTEXT text; + } +// define resources +RESOURCE STRING hello + { + text=Bonjour tout le monde!; + } +
+ + +Compile the resource file using the +resource compiler (rcomp) to generate an .rsc file +and an .rsg file. + + + .rsc file contains the resource data; this is +the resource file that must be referred to at run-time by the RResourceFile class +in the C++ code. + + + .rsg file is a generated + header file that contains #define statements +for each resource defined in the source file. In the resource file generated +here, the only resource is called hello and the generated +header file contains: +#define HELLO 1 +Note that the name in the generated header file is converted to upper +case. + + + + + #include the .rsg file in the +file containing the C++ code, to access the resource IDs generated by the +resource compiler. For example, for a project refered as ReadText, +this might be: +#include ReadText.rsg + + +Initialize the RResourceFile object in the C++ program, +specifying the name of the resource file: + +RResourceFile resourceFile; +resourceFile.OpenL( fsSession,_L( Z:\\system\\data\\ReadText.rsc ) ); +Note: To access the resource file contents, a session with the file +server must be started using an instance of RFs class. + + +Use one of the three functions (RResourceFile::AllocReadLC(), RResourceFile::AllocReadL() or RResourceFile::ReadL() to read a resource as shown in the following +code fragment: +HBufC8* dataBuffer = resourceFile.AllocReadLC( HELLO ); + + +Interpret the resource data using a TResourceReader object. +This provides access to the text string through a pointer descriptor as shown +in the following code fragment: + +TResourceReader theReader; +... +theReader.SetBuffer( datafBuffer ); +TPtrC textdata = reader.ReadTPtrC(); + + +

In this example, once the resource data is no longer needed, the +heap descriptor, dataBuffer, can be removed from the cleanup stack and destroyed +as shown in the code fragment:

CleanupStack::PopAndDestroy();

When +all operations on the resource file are complete, the resource file can be +closed using the RResourceFile::close() function as:

resourceFile.Close();
+Example

Consider a resource constructed +from the following definition.

RESOURCE ARRAY anarray +{ +items= + { + LBUF { txt="Esc"; }, + LBUF { txt="Enter"; }, + LBUF { txt="Tab"; }, + LBUF { txt="Del"; }, + LBUF { txt="Space"; } + }; +}

A TPtrC representing the second item can +be constructed using the ReadTPtrC() function. The example +simply takes the length of the text Enter:

// open the resource file +... +HBufC8* res = resourceFile.AllocReadLC( ANARRAY ); +TResourceReader theReader; +... +TInt len; +len = ( theReader.ReadTPtrC( 1,res ) ).Length(); // len == 5 +...
+
+Resource +files +Resource +file format +Resource +compilation
\ No newline at end of file