Conversions can be done in a single step or in multiple steps.
Single step
To convert an entire file or stream in a single step, use CConverterBase2::ConvertL() and CConverterBase2::ConvertObjectL() respectively.
The following code snippet converts the contents of c:\private\12345678\file1 and places the output in c:\private\12345678\file2.
_LIT(KFromFile, "c:\\private\\12345678\\file1"); _LIT(KToFile, "c:\\private\\12345678\\file2"); converter->ConvertL(KFromFile, KToFile, NULL);
Multiple steps
As the conversion process can take a long time, you can divide the process into multiple steps. To do this:
Call CConverterBase2::ConvertAL() (files) or CConverterBase2::ConvertObjectAL() (streams) to prepare the converter to convert.
Call CConverterBase2::DoConvertL() until it returns true.
The following example converts the contents of c:\private\12345678\file1 and places the output in c:\private\12345678\file2 in multiple steps. It assumes that conversion takes place within an active object, CMyActive, which does a conversion step in the RunL() function and reactivates the object if conversion is not complete.
void CMyActive::StartConverting() { _LIT( KFromFile, "c:\\private\\12345678\\file1" ); _LIT( KToFile, "c:\\private\\12345678\\file2" ); converter->ConvertAL( KFromFile, KToFile, NULL ); User::RequestComplete( iStatus,KErrNone ); SetActive(); } void CMyActive::RunL() { if (DoConvertL()) { User::RequestComplete( iStatus,KErrNone ); SetActive(); } else { // Handle completed conversion } }
NOTE: After using the converter, delete the converter and the converter list. The converter architecture unloads the converter DLLs that were loaded.