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