void CDebugLogPrint::WriteToLog8L(const TDesC8 &aDes, const TDesC8 &aDes2) { TBuf16<256> buf; TInt pos=aDes.LocateReverse(' '); if (pos<0) pos=0; buf.Copy(aDes.Mid(pos)); buf.Append(' '); TInt bufLen=buf.Length(); TPtr16 ptr(&buf[bufLen],buf.MaxLength()-bufLen); ptr.Copy(aDes2); buf.SetLength(bufLen+aDes2.Length()); _LIT(KDebugFormatString, "%S"); RDebug::Print(KDebugFormatString, &buf); }
EXPORT_C void CIpuTestHarness::GetAnEntry(const TDesC& ourPrompt, TDes& currentstring) // // Get an input string from the user, displaying a supplied prompt and default string value { // If we're scripting, try reading from script first TInt readScriptErr = KErrNotFound; if (iScriptRunning) { readScriptErr = ReadLineFromScript(currentstring); } if (!readScriptErr) return; // Either not scripting, or hit end of script - continue with user input TBuf16<KMaxUserEntrySize> ourLine; TBuf<KMaxUserEntrySize> tempstring; //tempstring is a unicode descriptor //create a temporary buffer where the //unicode strings are stored in order to //be displayed ourLine.Zero (); tempstring.Copy(currentstring); //Copy current string to Unicode buffer TKeyCode key = EKeyNull; //current string buffer is 8 bits wide. //Unicode string bufffer (tempstring) is 16 bits wide. for (;;) { if (ourLine.Length () == 0) { iTest.Console()->SetPos (0, iTest.Console()->WhereY ()); iTest.Console()->Printf (_L ("%S"), &ourPrompt); if (tempstring.Length () != 0) //get tempstring's number of items iTest.Console()->Printf (_L (" = %S"), &tempstring); //if not zero print them to iTest.Console() iTest.Console()->Printf (_L (" : ")); iTest.Console()->ClearToEndOfLine (); } key = iTest.Getch(); if (key == EKeyBackspace) { if (ourLine.Length() !=0) { ourLine.SetLength(ourLine.Length()-1); iTest.Console()->Printf (_L ("%c"), key); iTest.Console()->SetPos(iTest.Console()->WhereX(),iTest.Console()->WhereY()); iTest.Console()->ClearToEndOfLine(); } // end if (ourLine.Length() !=0) } // end if (key == KeyBackSpace) if (key == EKeyDelete) { ourLine.Zero(); iTest.Console()->SetPos (0, iTest.Console()->WhereY ()); iTest.Console()->ClearToEndOfLine (); tempstring.Copy(ourLine); break; } if (key == EKeyEnter) break; if (key < 32) { continue; } ourLine.Append (key); iTest.Console()->Printf (_L ("%c"), key); iTest.Console()->SetPos(iTest.Console()->WhereX(),iTest.Console()->WhereY()); iTest.Console()->ClearToEndOfLine(); if (ourLine.Length () == ourLine.MaxLength ()) break; } // end of for statement if ((key == EKeyEnter) && (ourLine.Length () == 0)) tempstring.Copy (currentstring); //copy contents of 8 bit "ourLine" descriptor iTest.Console()->SetPos (0, iTest.Console()->WhereY ()); iTest.Console()->ClearToEndOfLine (); iTest.Console()->Printf (_L ("%S"), &ourPrompt); if ((key == EKeyEnter) && (ourLine.Length() !=0)) tempstring.Copy(ourLine); if (tempstring.Length () != 0) //if temstring length is not zero { iTest.Console()->Printf (_L (" = %S\n"), &tempstring); //print the contents to iTest.Console() LogIt(_L ("%S = %S\n"), &ourPrompt, &tempstring); } else //iTest.Console()->Printf (_L (" is empty")); iTest.Console()->Printf (_L ("\n")); currentstring.Copy(tempstring); //copy 16 bit tempstring descriptor back }