1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| uses IdHTTP, IdException;
type ENotFound = class(Exception); TAddress = record Name, Anschrift, PLZ_Ort: String; end;
function get_name_by_number(Number: String): TAddress; procedure Error; begin raise ENotFound.Create('Incorrect format'); end; var Answer, A1, A2: String; I: Integer; begin with TIdHTTP.Create do try Answer := Get('http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?main=Antwort&AKTION=START_INVERS_SUCHE&SEITE=INVERSSUCHE_V&s=2&rg=1&taoid=&si=&SKN=0&kw_invers='+Number); I := Pos('class="blb"',Answer); if I = 0 then Error; Answer := Copy(Answer, I, Length(Answer)-I+1); I := Pos('>',Answer); if I = 0 then Error; Answer := Copy(Answer, I+1, Length(Answer)-I); I := Pos('</td>',Answer); if I = 0 then Error; Answer := Copy(Answer, 1, I-1); I := Pos('</a><br>',Answer); if I = 0 then Error; A1 := Copy(Answer, 1, I-1); A2 := Copy(Answer, I+8, Length(Answer)-(I+8-1)); I := Pos(',',A2); if I = 0 then Error; Result.Name := Trim(A1); Result.Anschrift := Trim(Copy(A2, 1, I-1)); Result.PLZ_Ort := Trim(Copy(A2, I+1, Length(A2)-I)); finally Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); var Adresse: TAddress; begin try Adresse := get_name_by_number('04394610'); ShowMessage(Adresse.Name+#13+Adresse.Anschrift+#13+Adresse.PLZ_Ort); except on E:ENotFound do MessageDlg('Fehler beim Nachschlagen.', mtError, [mbOk], 0); on E:EIdException do MessageDlg('Fehler bei der Verbindung.', mtError, [mbOk], 0); end; end; |