我想将DEPHI中的几条语句转换成C++BUILDER用。我用的DEPHI版本是6.0,C++BUILDER是5.0。
1)if (lvHeaders->Selected=nil)then begin......end;(*lvHeaders是一个 TListView对象*)
2)if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then begin......end;(*Msg是一个TIdMessage对象*)
3)Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);(*Msg是一个TIdMessage对象*)
注:我的C++BUILDER中将了Indy这个控件包
1)if (lvHeaders->Selected=nil)then begin......end;(*lvHeaders是一个 TListView对象*)
2)if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then begin......end;(*Msg是一个TIdMessage对象*)
3)Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);(*Msg是一个TIdMessage对象*)
注:我的C++BUILDER中将了Indy这个控件包
2.if (Msg.MessageParts.Items[intIndex]==TIdAttachment) {.....}
3.Memo1.Lines.Add(TIdText(Msg.MessageParts.Items[intIndex]).Body);两种工具中的控件都相同,方法都差不多吧
第二条出错:
E2108 Improper use of typedef 'TIdText'
E2459 VCL style classes must be constructed using operator new
第三条中的.是不是应该改成-> ?而且也出错:
E2285 Could not find a match for 'TIdText::TIdText(TIdMessagePart *)'
E2459 VCL style classes must be constructed using operator new
TIdText *p;
...
if (!lvHeaders->Selected) {......}
if (Msg->MessageParts->Items[intIndex]==TIdAttachment) {.....}
p = new TIdText(Msg->MessageParts->Items[intIndex]);
Memo1->Lines->Add(p->Body);
第二条:if (Msg->MessageParts->Items[intIndex]==TIdAttachment)出错:
[C++ Error] mail.cpp(95): E2108 Improper use of typedef 'TIdAttachment'
[C++ Warning] mail.cpp(108): W8004 'TeTemp' is assigned a value that is never used
第三条:p = new TIdText(Msg->MessageParts->Items[intIndex]);出错:
[C++ Error] mail.cpp(99): E2285 Could not find a match for 'TIdText::TIdText(TIdMessagePart *)'
(1) if (Msg->MessageParts->Items[intIndex]==TIdAttachment)
这句话是判断Msg->MessageParts->Items[intIndex]是否是TIdAttachment类型,应该可以是这样代替:
TIdAttachment *pAttach;
pAttach=dynamic_cast<TIdAttachment*>(Msg->MessageParts->Items[intIndex];
if (pAttach!=NULL)
//这以下就是你的代码了。
(2)那个Warning就不用理它了。
(3)Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
这一句我想是把Msg.MessageParts.Items[intIndex]转为TIdText类型吧,所以可以这样写:
TIdText *pIdText=(TIdText*)Msg->MessageParts->Items[intIndex];
Memo1->Lines->AddStrings(pIdText->Body);
由于周六是中秋,我去玩了,所以没看到你的留言,抱歉。昨夜我见到了你的留言,可是却没见到你的email,我今天也看了几次,都没有!是不是没有发成功,还是你发送的文件太大?
下面我分析了一下那段delphi源码,估计是以下意思:
(1) if (Msg->MessageParts->Items[intIndex]==TIdAttachment)
这句话是判断Msg->MessageParts->Items[intIndex]是否是TIdAttachment类型,应该可以是这样代替:
TIdAttachment *pAttach;
pAttach=dynamic_cast<TIdAttachment*>(Msg->MessageParts->Items[intIndex];
if (pAttach!=NULL)
//这以下就是你的代码了。
(2)那个Warning就不用理它了。
(3)Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
这一句我想是把Msg.MessageParts.Items[intIndex]转为TIdText类型吧,所以可以这样写:
TIdText *pIdText=(TIdText*)Msg->MessageParts->Items[intIndex];
Memo1->Lines->AddStrings(pIdText->Body);
/////////
好了,上面的代码我也没有调试过,这也应该差不多了。我在你的贴子里面回答问题时没有仔细看清楚,还请你见谅!对了,我也有个比较困惑的问题,是关于 POP3取邮件的,
比如[email protected],我用DNS分析出abc.com的主机,但是可能有多个,不知该怎么办?
咱QQ里聊吧:
85774081,注明:邮件