Indy 9自带demo "DNSResolver Client" 编译通不过。
我用的是delphi7+indy9.0.14 for delphi7+win2kdemo是从官方网站下的http://www.indyproject.org/indy/demodownloads/I9D6_Demos_24Nov02.zip以下是调试信息,一大片啊,好像是一些方法都不认啊,怎么会这样,汗~~~Build
  [Error] fmDNSResolverMainU.pas(197): Incompatible types: 'TQueryRecordTypes' and 'Integer'
  [Error] fmDNSResolverMainU.pas(200): Incompatible types: 'String' and 'TResultRecord'
  [Error] fmDNSResolverMainU.pas(202): ':=' expected but ':' found
  [Error] fmDNSResolverMainU.pas(203): Expression expected but 'BEGIN' found
  [Error] fmDNSResolverMainU.pas(205): Record, object or class type required
  [Error] fmDNSResolverMainU.pas(205): 'END' expected but ')' found
  [Error] fmDNSResolverMainU.pas(207): ':=' expected but ':' found
  [Error] fmDNSResolverMainU.pas(208): Expression expected but 'BEGIN' found
  [Error] fmDNSResolverMainU.pas(210): Record, object or class type required
  [Error] fmDNSResolverMainU.pas(210): 'END' expected but ')' found
  [Error] fmDNSResolverMainU.pas(212): Declaration expected but identifier 'qtMX' found
  [Error] fmDNSResolverMainU.pas(214): Undeclared identifier: 'memoResult'
  [Error] fmDNSResolverMainU.pas(214): Missing operator or semicolon
  [Error] fmDNSResolverMainU.pas(214): Incompatible types
  [Error] fmDNSResolverMainU.pas(215): Missing operator or semicolon
  [Error] fmDNSResolverMainU.pas(215): Undeclared identifier: 'QueryResult'
  [Error] fmDNSResolverMainU.pas(215): Undeclared identifier: 'i'
  [Error] fmDNSResolverMainU.pas(215): Missing operator or semicolon
  [Error] fmDNSResolverMainU.pas(217): '.' expected but ';' found
  [Error] fmDNSResolverMainU.pas(219): Identifier redeclared: 'Finalization'
  [Error] fmDNSResolverMainU.pas(220): Missing operator or semicolon
  [Error] fmDNSResolverMainU.pas(220): Incompatible types
  [Error] fmDNSResolverMainU.pas(221): Missing operator or semicolon
  [Error] fmDNSResolverMainU.pas(221): Undeclared identifier: 'QueryResult'
  [Error] fmDNSResolverMainU.pas(221): ')' expected but identifier 'RData' found
  [Error] fmDNSResolverMainU.pas(221): 'END' expected but ')' found
  [Warning] fmDNSResolverMainU.pas(228): Text after final 'END.' - ignored by compiler
  [Error] fmDNSResolverMainU.pas(46): Unsatisfied forward or external declaration: 'TForm1.rbRecordClick'
  [Error] fmDNSResolverMainU.pas(47): Unsatisfied forward or external declaration: 'TForm1.rbAllClick'
  [Error] fmDNSResolverMainU.pas(48): Unsatisfied forward or external declaration: 'TForm1.rbZoneClick'
  [Error] fmDNSResolverMainU.pas(49): Unsatisfied forward or external declaration: 'TForm1.cbAClick'
  [Error] fmDNSResolverMainU.pas(50): Unsatisfied forward or external declaration: 'TForm1.FormActivate'
  [Fatal Error] DNSResolver.dpr(5): Could not compile used unit 'fmDNSResolverMainU.pas'

解决方案 »

  1.   


    自己仔细找吧
    全是常见错误
    给几个 写错了符号,-->;
            少写了(
           定义向前的变量或者过程
           未定义的变量
           少写了 begin   end
           类型定义错误
      

  2.   

    这个 Demos 确实是有错的(主要是因为 TQueryResult 的 Items[Index]  TResultRecord 有很多继承类的问题造成的),我已经修改完了,供参考。procedure TForm1.acRunExecute(Sender: TObject);
    var
      i: integer;
    begin
      IdDNSResolver.Active := true;
      IdDNSResolver.Resolve(edQuery.text);
      IdDNSResolver.Active := false;
      for i := 0 to  IdDNSResolver.QueryResult.Count - 1 do
      begin
        case IdDNSResolver.QueryResult[i].RecType of
          qtA:
          begin
            memoResult.Lines.Append('A:');
            memoResult.Lines.Append('  Domain Name: ' + TARecord(IdDNSResolver.QueryResult[i]).IPAddress);
          end;
          qtName:
          begin
            memoResult.Lines.Append('Name');
            memoResult.Lines.Append('  Name: ' + TNAMERecord(IdDNSResolver.QueryResult[i]).HostName);
          end;
          qtPTR:
          begin
            memoResult.Lines.Append('PTR:');
            memoResult.Lines.Append('  PTR: ' + TPTRRecord(IdDNSResolver.QueryResult[i]).HostName);
          end;
          qtMX:
          begin
            memoResult.Lines.Append('MX');
            memoResult.Lines.Append('  Exchange: ' + TMXRecord(IdDNSResolver.QueryResult[i]).ExchangeServer);
            memoResult.Lines.Append('  preference: ' + IntToStr(TMXRecord(IdDNSResolver.QueryResult[i]).Preference));
          end;
          qtSOA:
          begin
            memoResult.Lines.Append('SOA');
            memoResult.Lines.Append('  Expire: ' + IntToStr(TSOARecord(IdDNSResolver.QueryResult[i]).Expire));
            memoResult.Lines.Append('  Minimum: ' + IntToStr(TSOARecord(IdDNSResolver.QueryResult[i]).MinimumTTL));
            memoResult.Lines.Append('  MName: ' + TSOARecord(IdDNSResolver.QueryResult[i]).Primary);
            memoResult.Lines.Append('  Refresh: ' + IntToStr(TSOARecord(IdDNSResolver.QueryResult[i]).Refresh));
            memoResult.Lines.Append('  Retry: ' + IntToStr(TSOARecord(IdDNSResolver.QueryResult[i]).Retry));
            memoResult.Lines.Append('  RName: ' + TSOARecord(IdDNSResolver.QueryResult[i]).ResponsiblePerson);
            memoResult.Lines.Append('  Serial: ' + IntToStr(TSOARecord(IdDNSResolver.QueryResult[i]).Serial));
          end;
          qtWKS:
          begin
            memoResult.Lines.Append('WKS');
            memoResult.Lines.Append('  Address: ' + TWKSRecord(IdDNSResolver.QueryResult[i]).Address);
            memoResult.Lines.Append('  Protocol: ' + IntToStr(TWKSRecord(IdDNSResolver.QueryResult[i]).Protocol));
            memoResult.Lines.Append('  Bytes: ' + Format('%d %d %d %d %d %d %d %d',
                                                    [(IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[0],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[1],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[2],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[3],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[4],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[5],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[6],
                                                     (IdDNSResolver.QueryResult[i] as TWKSRecord).BitMap[7]]
                                                    ));
          end;
          qtHINFO:
          begin
            memoResult.Lines.Append('HINFO');
            memoResult.Lines.Append('  CPU: ' + (IdDNSResolver.QueryResult[i] as THInfoRecord).CPU);
            memoResult.Lines.Append('  Os: ' + (IdDNSResolver.QueryResult[i] as THInfoRecord).CPU);
          end;
          qtMINFO:
          begin
            memoResult.Lines.Append('MINFO:');
            memoResult.Lines.Append('  Errors MailBox: ' + (IdDNSResolver.QueryResult[i] as TMInfoRecord).ErrorMailbox);
            memoResult.Lines.Append('  Responsible persone MailBox: ' + (IdDNSResolver.QueryResult[i] as TMInfoRecord).ResponsiblePersonMailbox);
          end;
          qtNS:
          begin
            memoResult.Lines.Append('NS:');
            memoResult.Lines.Append('  Name server: ' + TNSRecord(IdDNSResolver.QueryResult[i]).HostName);
          end;
          else
          begin
            memoResult.Lines.Append('Other:');
            memoResult.Lines.Append('  Data: ' + (IdDNSResolver.QueryResult[i]).RData);
          end;
        end;
        memoResult.Lines.Append('  TTL: ' + IntToStr(IdDNSResolver.QueryResult[i].TTL));
      end;
    end;
      

  3.   

    to zhengcg(楚楚) 非常感谢!!小弟马上结贴!奇怪,官方发布的demo还会有错,并且从网上也搜不到相关bug的说明。