#include <INet.au3>
#include <GUIConstants.au3>
;
#cs
GetTelAdrRev v0.1
-----------------
Zielsetzung war eine reverse Anfrage an "www.dasoertliche.de" zu stellen und das Ergebnis mit Hilfe
von "Regular Expressions" zu parsen.
Dazu geht das Script hin - "bastelt" eine SEHR bescheidene GUI, die aus einer Reihe von Textfeldern
und einem Start Button besteht. Nach Eingabe einer vollstaendigen Nummer (Vorwahl und Telefonnummer)
in das erste Textfeld und anschliessendem betaetigen des "Get..." Buttons, wird eine Anforderung
mit Hilfe von "_INetGetSource" abgeschickt, deren Ergebnis anschliessend nach den gefundenen
Informationen "abgeklappert" - geparst wird.
GetTelAdrRev ist mein erstes kleines Script - also seid gnaedig
Bei der Gelegenheit:
"Autoit" ist also soetwas von toll ( the best you can get for free ) -
vielen Dank an dieser Stelle an alle die dem Projekt Leben einhauchen.
Nicht vergessen zu erwaehnen moechte ich "olistudent @ #fritzbox" der mir mit dem Pattern und der
URL auf die Spruenge geholfen hat sowie "peethebee @ #autoit", der meine wohl typischen
Anfaengerfragen ueber sich ergehen liess...thx buddies in mind
PS: Ueber Rückmeldungen, Kritiken sowie Verbesserungsvorschlaege wuerde ich mich sehr freuen...
#ce
Dim Const $sVERSION = "GetTelAdrRev v0.1 by ralf_reinders@web.de"
If (CheckRunningInstance() = 1) Then WinMain()
Func WinMain()
Dim $ID_GUI_Form1, $ID_GUI_TB_TelNr, $ID_GUI_TB_Matches, $ID_GUI_TB_Html, $ID_GUI_BT_Run
Dim $msg, $sTelNr, $sHtml, $sMatches
$ID_GUI_Form1 = GUICreate ($sVERSION, 320, 240)
$ID_GUI_TB_TelNr = CreateTextBox("06235 60 21", 10, 10, 300, 20, 1)
$ID_GUI_TB_Matches = CreateTextBox("", 10, 50, 300, 60, 0, $ES_MULTILINE+$WS_VSCROLL)
$ID_GUI_TB_Html = CreateTextBox("", 10, 140, 300, 20, 0)
$ID_GUI_BT_Run = GUICtrlCreateButton("Get...", 65, 190, 200)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $ID_GUI_BT_Run
GUICtrlSetData($ID_GUI_TB_Matches, "")
GUICtrlSetData($ID_GUI_TB_Html, "")
$sTelNr = GUICtrlRead($ID_GUI_TB_TelNr)
If GetTelAdrRev($sTelNr, $sMatches, $sHtml) Then
GUICtrlSetData($ID_GUI_TB_Matches, $sMatches)
EndIf
GUICtrlSetData($ID_GUI_TB_Html, $sHtml)
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
EndFunc
Func GetTelAdrRev($sTelNr, ByRef $sMatches, ByRef $sHtml)
Dim $i, $aMatches
Dim $sUrl = "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=" & $sTelNr & "&main=Antwort&s=2"
Dim $sPattern = '<a class="blb" href="[^"]*"> *([^<]*)</a>(?:<br>(?: )*([^<]*))?</td>*'
$sHtml = _INetGetSource($sUrl) ; $size = InetGetSize($url)
If StringLen($sHtml) > 0 Then
$aMatches = StringRegExp($sHtml, $sPattern, 3) ; flag(3) => "globale Suche"
If IsArray($aMatches) Then
$sMatches = ""
For $i = 1 To UBound($aMatches)
$sMatches &= $aMatches[$i-1] & @CRLF
Next
Return 1
Else
Return 0
EndIf
Else
MsgBox(16, $sVERSION, "Keine Rueckgabe")
EndIf
EndFunc
Func CreateTextBox($sTxt, $lLeft, $lTop, $lWidth, $lHeight, $bState, $lExtStyle = 0)
Dim $ID_TB
If ($lExtStyle <> 0) Then
$ID_TB = GUICtrlCreateInput($sTxt, $lLeft, $lTop, $lWidth, $lHeight, $lExtStyle)
Else
$ID_TB = GUICtrlCreateInput($sTxt, $lLeft, $lTop, $lWidth, $lHeight)
EndIf
GUICtrlSetState($ID_TB, $bState)
If ($bState = 0) Then
GUICtrlSetStyle($ID_TB, $ES_READONLY)
GUICtrlSetBkColor($ID_TB, 0xC0C0C0)
EndIf
Return $ID_TB
EndFunc
Func CheckRunningInstance()
If WinExists($sVERSION) Then
MsgBox(16, $sVERSION, "Eine andere Instanz ist bereits aktiv - Abbruch !!!", 3)
Return 0
Else
AutoItWinSetTitle($sVERSION)
Return 1
EndIf
EndFunc
Func DebugOut($sString)
DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sString)
EndFunc