首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

c++builder编译pas文件遇到的有关问题 [Pascal Error] icmp.pas(443): Incompatible types: 'Stri

2012-02-26 
c++builder编译pas文件遇到的问题 [Pascal Error] icmp.pas(443): Incompatible types: String and Poi

c++builder编译pas文件遇到的问题 [Pascal Error] icmp.pas(443): Incompatible types: 'String' and 'Pointer'
怎么解决。。。

function   TICMP.Ping   :   Integer;
var
    BufferSize:                 Integer;
    pReqData,   pData:       Pointer;
    pIPE:                             PIcmpEchoReply;               //   ICMP   Echo   reply   buffer
    IPOpt:                           TIPOptionInformation;   //   IP   Options   for   packet   to   send
    Msg:                               String;
begin
        Result           :=   0;
        FLastError   :=   0;

        if   not   FAddrResolved   then
                ResolveAddr;

        if   FIPAddress   =   LongInt(INADDR_NONE)   then   begin
                FLastError   :=   IP_BAD_DESTINATION;
                if   Assigned(FOnDisplay)   then
                        FOnDisplay(Self,   'Invalid   host   address ');
                Exit;
        end;

        //   Allocate   space   for   data   buffer   space
        BufferSize   :=   SizeOf(TICMPEchoReply)   +   FSize;
        GetMem(pReqData,   FSize);
        GetMem(pData,         FSize);
        GetMem(pIPE,           BufferSize);

        try
                //   Fill   data   buffer   with   some   data   bytes
                FillChar(pReqData^,   FSize,   $22);
                Msg   :=   '121212121 ';
                pReqData:=Msg;
                Move(Msg[1],   pReqData^,   MinInteger(FSize,   Length(Msg)));

                pIPE^.Data   :=   pData;
                FillChar(pIPE^,   SizeOf(pIPE^),   0);

                if   Assigned(FOnEchoRequest)   then
                        FOnEchoRequest(Self);

                FillChar(IPOpt,   SizeOf(IPOpt),   0);
                IPOpt.TTL       :=   FTTL;
                IPOpt.Flags   :=   FFlags;
                Result             :=   IcmpSendEcho(hICMP,   FIPAddress,   pReqData,   FSize,


                                                                        @IPOpt,   pIPE,   BufferSize,   FTimeOut);
                FLastError     :=   GetLastError;
                FReply             :=   pIPE^;

                if   Assigned(FOnEchoReply)   then
                        FOnEchoReply(Self,   Result);
        finally
                //   Free   those   buffers
                FreeMem(pIPE);
                FreeMem(pData);
                FreeMem(pReqData);
        end;
end;


{*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *}

end.


[解决办法]
用错类型了吧,你检查一下看看那里把一个pointer赋值给一个string了
检查你的433行的代码,我不知道是那一行。

热点排行