我想将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.   

    1.if (!lvHeaders->Selected) {......}
    2.if (Msg.MessageParts.Items[intIndex]==TIdAttachment) {.....}
    3.Memo1.Lines.Add(TIdText(Msg.MessageParts.Items[intIndex]).Body);两种工具中的控件都相同,方法都差不多吧
      

  2.   

    knock(天天睡觉) ,我试了一下,第一条行了,
    第二条出错: 
    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
      

  3.   

    左手刀,右手剑,刀法剑法分不清了。哈哈!对象没有创建。先创建,用 new 方法或者自带的构造函数 create 创建。
      

  4.   

    TListItem *lvHeaders;
    TIdText *p;
    ...
    if (!lvHeaders->Selected) {......}
    if (Msg->MessageParts->Items[intIndex]==TIdAttachment) {.....}
    p = new TIdText(Msg->MessageParts->Items[intIndex]);
    Memo1->Lines->Add(p->Body);
      

  5.   

    jianlinlong(楚 潇) ,对不起,我是一个还没有入门的菜鸟,现在出现了这样的问题:
    第二条: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 *)'
      

  6.   

    下面我分析了一下那段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);
      

  7.   

    谢谢!
    由于周六是中秋,我去玩了,所以没看到你的留言,抱歉。昨夜我见到了你的留言,可是却没见到你的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,注明:邮件