delphi - ¿Lectura de respuesta de TIdDNSResolver?
delphi-xe2 indy (1)
Deberá encasillar el QueryResult
recopilación QueryResult
en un descendiente TResultRecord
específico según el valor de la propiedad RecType
del elemento. Desde la referencia de propiedad Items
:
Use casting para devolver una referencia de objeto que permita el acceso a cualquier propiedad o método específico de la clase descendiente asociada con el valor en TResultRecord.RecType.
El patrón de nombre de las clases descendientes TResultRecord
es así:
T<DNS lookup type>Record
Entonces, en tu caso, se vería así:
for X := 0 to DNS.QueryResult.Count - 1 do
begin
if DNS.QueryResult[X].RecType = qtA then
Result := TARecord(DNS.QueryResult[X]).IPAddress; // "A" lookup -> TARecord
end;
Para un tipo de búsqueda AAAA
sería:
for X := 0 to DNS.QueryResult.Count - 1 do
begin
if DNS.QueryResult[X].RecType = qtAAAA then
Result := TAAAARecord(DNS.QueryResult[X]).Address; // "AAAA" lookup -> TAAAARecord
end;
Ejemplos de funciones para las búsquedas de DNS IPv4 e IPv6 que puede find here
.
No puedo encontrar ningún ejemplo simple de una búsqueda DNS utilizando el componente TIdDNSResolver
Indy 10. Todos son para algo que no necesito (como MX / SMTP), o son términos sin código . Intenté leer el resultado en función de los pocos recursos que puedo encontrar, pero no sé cómo se supone que debo leer el resultado.
Esto es lo que tengo hasta ahora ...
uses
IdBaseComponent, IdComponent, IdTCPConnection, IdDNSResolver;
function TForm1.Lookup(const Name: String): String;
var
X: Integer;
begin
//DNS: TIdDNSResolver
DNS.QueryType:= [qtA];
DNS.Resolve(Name);
for X:= 0 to DNS.QueryResult.Count-1 do begin
if DNS.QueryResult[X].RecType = qtA then
//Result:= DNS.QueryResult[X].RData; <--- ????
end;
end;
uso...
HostIP:= Lookup(''www.google.com'');
¿Cómo leo esta respuesta?