This topic describes the parsing capabilities of the above said functions.
The above three classes are provided for parsing filenames. All
provide the same parsing capability (except that the path passed to TParsePtrC
cannot be modified, for example by adding or
removing a directory), but they differ in several respects. TParse
uses a 256 byte TFileName
as an
internal buffer to store a copy of the fully parsed filename. The
other two classes on the other hand do not have any storage space.
They should be used in preference to TParse
when
minimizing stack usage is a priority.
When using TParsePtr
and TParsePtrC
in preference to TParse
, remember that:
unlike TParse
, these classes do not provide an option to disallow
the use of wildcards in the filename and extension
because the
path to be parsed is efficiently passed as an argument to the constructor
for a TParsePtr
or TParsePtrC
, if
this path is invalid, construction will fail and a panic will occur. TParse
, on the other hand, returns an error if the specified
path is invalid
only instances
of class TParse
can be passed to calls to RFs::Parse()
TParsePtrC
cannot modify the path which is passed to it, for example by adding
or removing a directory
If the length of the file path is more than 256 characters, file operations such as rename, copy and delete results in an error. However, it is possible to create a filepath which exceeds 256 character limit as follows:
Consider the following path:
C:\Multimedia\AVCodec\testproduct\...\avtests.txt
Rename the AVCodec
directory to AVCodec123456789123456789
. If the length of the complete
file path, C:\Multimedia\AVCodec123456789123456789\testproduct\...\avtests.txt
exceeds 256 characters, any file operation will fail. Similarly,
when you create a file with the filepath more than 256 characters
will result in an error.
However, on the emulator, the limit may be less than 256 characters.