我正在使用Symbian C ++创建我的代码,我正在使用S60 5th Ed SDK
我想知道如何向for循环中的多个收件人发送不同的邮件 - 他们的正文文本不一样?
我已经尝试过以下示例,但是当我尝试在循环中使用它时,由于ActiveObjects属性而崩溃,因为我应该等待AO完成再重新调用它。
Sending_SMS_in_S60_3rd_Edition_MTM
下面是我需要做的例子:
SendSMSL(); // **I call this function once to start the process**
// **iRecepients is a CDesCArray contains phone numbers**
// ** iSMSBody is a CDesCArray contains each contact SMS body text**
void CSMS::SendSMSL()
{
if(iRecepients->Count() >= 1)
{
TInt x = iRecepients->Count()-1;
TInt y = iSMSBody->Count()-1;
// **If the sms validating and scheduling succeeded then delete last item from both arrays**
if(iSMSHandler->SendL((*iRecepients)[x],(*iSMSBody)[y])
{
iRecepients->Delete(x);
iSMSBody->Delete(y);
}
}
}
现在,在上面的代码中,我调用了iSMSHandler-> SendL(),它使用AO发送短信,在 iSMSHandler 对象 RunL()函数中,我回调上面的函数 CSMS :: SendSMSL(),它反过来检查是否还有iRecepients元素,然后再次调用iSMSHandler-> SendL()AO,并保持这种方式直到不再有iRecepients。
期待听到您对上述修改的反馈意见。
非常感谢提前。
答案 0 :(得分:1)
您发布的链接对我不起作用,因此我看不到剩下的代码。
假设iSmsHandler是一个使用活动对象发送SMS消息的类, 我看到你的循环有几个问题。
1)您需要等待第一个异步SendL完成才能发出下一个SendL 2)在SendL完成之前,buf变量不能超出范围。 (这可能是你崩溃的原因)
我建议您将textbuffer保留在其他位置,例如与iSmsHandler一起,然后对SendL完成时调用的活动对象进行编码以发出下一个SendL。
所有这些都是猜测,因为我不知道iSmsHandler是什么类......