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.