难道是幻觉——返回值问题
TPtrC Ctest1ContainerView::GetContactsNameL(const TDes &aPhoneNumber)
{
CContactDatabase* contactsDB=CContactDatabase::OpenL ();
CleanupStack::PushL (contactsDB);
CContactItemFieldDef* fields = new (ELeave) CContactItemFieldDef();
CleanupStack::PushL (fields);
fields->AppendL (KUidContactFieldPhoneNumber);
CContactIdArray* currentSel = contactsDB->FindLC (aPhoneNumber, fields);
CleanupStack::PushL (currentSel);
if ( currentSel->Count ()< 1)
{
// CleanupStack::PopAndDestroy (4, contactsDB);
TPtrC PhoneNumber(aPhoneNumber);
return PhoneNumber;
}
CContactItem* Item = contactsDB->ReadContactL ((*currentSel)[0]);
CleanupStack::PushL (Item);
CContactItemFieldSet& fieldSet=Item->CardFields ();
TInt posGivenName = fieldSet.FindNext (KUidContactFieldGivenName, 0);
TInt posFamilyName = fieldSet.FindNext (KUidContactFieldFamilyName, 0);
CContactItemField& ItemFieldGivenName = fieldSet[posGivenName];
CContactItemField& ItemFieldFamilyName = fieldSet[posFamilyName];
// if ( !(ItemFieldGivenName.IsHidden()) && !(ItemFieldGivenName.IsDisabled())
// &&!(ItemFieldFamilyName.IsHidden())&& !(ItemFieldFamilyName.IsDisabled()))
// {
CContactTextField* GivenName = ItemFieldGivenName.TextStorage ();
CleanupStack::PushL (GivenName);
CContactTextField* FamilyName = ItemFieldFamilyName.TextStorage ();
CleanupStack::PushL (FamilyName);
_LIT(KString," ");
TBuf<40> FullName(KString);
// TPtr pFullName(FullName,sizeof(FullName));
TPtrC pFullName(FullName);
FullName.Copy (FamilyName->Text ());
FullName.Append (GivenName->Text ());
_LIT(KTest, "Test Data");
CEikonEnv::Static()->InfoWinL (KTest, pFullName);
// CleanupStack::PopAndDestroy (6, contactsDB);
return pFullName;
}
我在函数里调用CEikonEnv::Static()->InfoWinL (KTest, pFullName);成功,我把pFullName返回, 但当我
然后在该程序外又一次调用如下CEikonEnv::Static()->InfoWinL (KText, GetContactsNameL (ptr)); 却显示的不是pFullName的内容, 乱码 为什么, 求高手解答 谢谢