Indy DNSResolver

Alle Fragen zur Netzwerkkommunikation
Antworten
koelschman
Beiträge: 2
Registriert: Do 11. Jul 2013, 15:58

Indy DNSResolver

Beitrag von koelschman »

Hallo zusammen,

ich versuche einen Reverselookup auf einen DNS Server zu machen, funktioniert auch alles wunderbar, solange der Eintrag den ich suche vorhanden ist.

Kommt aber eine Anfrage, die nicht vorhanden ist, bekomme ich einen Fehler:
Exception: EIdDnsResolverError
Meldung: DNS Server Reports Query Name Error

Was kann ich tun, um diese Exception abzufangen? Ist ja auch ok, dass nicht alle Anfragen richtig beantwortet werden können.

Hier mein Quelltext:

Code: Alles auswählen

 
 dnsresolver.Host:=ed_dns.Text;
 
                try
                   DNSResolver.Resolve(stringg_summary.cells[2,n]);
                   for x := 0 to DNSResolver.QueryResult.Count - 1 do
                    begin
                         DnsResource := DNSResolver.QueryResult[x];
                         qtar := TARecord(DnsResource);
                         memo_log.Append(DnsResource.Name);
                         stringg_summary.cells[10,n]:=DnsResource.DisplayName;
                         memo_log.Append(DnsResource.DisplayName);
                         memo_log.Append(qtar.IPAddress);
                    end;
                except
                    stringg_summary.Cells[10,n]:= 'nicht auflösbar';
                end;
 
 
 

irq
Beiträge: 25
Registriert: Mi 3. Jul 2013, 02:32
OS, Lazarus, FPC: Linux (L 0.9.30 FPC 2.6.0)
CPU-Target: 32Bit, 64Bit

Re: Indy DNSResolver

Beitrag von irq »

hi
schon mal versucht die exception explizit mit "on ... do" anzugeben?
viele grüße
-- irq

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Indy DNSResolver

Beitrag von af0815 »

Abfangen heißt, das sie ja trotzdem geworfen wird. Nur reagiert das Programm darauf.

In der IDE kannst du sie explizit angeben, das Lazarus beim Testen nicht jedesmal stehen bleibt und sie dir trotzdem anzeigt. Das geht über die Debuggereinstellungen.
Wenn du das Programm ohne Debugger startest wird es sich so verhalten wie durch die Exceptionbehandlung vorgegeben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten