Aus einer Ini-Datei eine bestimmte Zeile und davon auch nur bestimmte Teile auslesen

  • Hallo,
    ich möchte ein Programm zum auslesen und berechnen der Microsoft-Aktienkurse (kA :D) erstellen.
    Soweit bin ich:

    [autoit]

    #RequireAdmin
    #include <FF.au3>
    $Socket = _FFStart("http://www.boersennews.de/markt/aktien/microsoft-us5949181045/87089/profile?source=g&gclid=CJ7-xd3s0qcCFQuEzAodIgyJ_A&rd=1")
    $sText = _FFReadText($socket)
    IniWrite(@DesktopDir & "\mskurs.au3", "http://www.boersennews.de/markt/aktien/microsoft-us5949181045/87089/profile?source=g&gclid=CJ7-xd3s0qcCFQuEzAodIgyJ_A&rd=1", "Text", $sText)

    [/autoit]

    Jetzt soll das mit aktuell 17,78 EUR und -0,4479 ausgelesen werden.
    Wie geht das?

    Chicken

  • Woher weiß AutoIT denn dann ob das gewünschte drinsteht, ist doch jeden Tag mehr oder weniger anders :O
    z.b. Z. 7 an dritter Stelle fängt es an und hört auf an 8. stelle. Was in diesen Bereich steht soll genommen werden, da es immer da steht :)

  • hier mal ein stand-alone beispiel:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <INet.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("boersennews.de", 400, 120)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
    $lab = GUICtrlCreateLabel("URL:", 10, 12, 60, 16)
    $url = GUICtrlCreateInput("", 70, 10, 260, 20)
    $get = GUICtrlCreateButton("get it", 340, 10, 50, 20)
    $titel = GUICtrlCreatelabel("", 21, 43, 360, 15, $SS_CENTER)
    $label1 = GUICtrlCreatelabel("", 171, 65, 60, 15, $SS_CENTER)
    $label2 = GUICtrlCreatelabel("", 171, 89, 60, 15, $SS_CENTER)
    GUICtrlSetOnEvent($get, "_check")
    GUISetState()
    Opt("GuiOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    func _check()
    $link = GUICtrlRead($url)
    if StringInStr($link, "http://www.boersennews.de/markt/aktien") then
    GUICtrlSetData($label1, "lade...")
    $download = _INetGetSource($link)
    $titel1 = StringTrimLeft($download, StringInStr($download, "<title>")+6)
    $titel1 = StringLeft($titel1, StringInStr($titel1, "</title>")-17)
    $titel1 = StringReplace(StringTrimLeft($titel1, StringInStr($titel1, "aktie - ")+7), "aktienkurs", "")
    $download = StringTrimLeft($download, StringInStr($download, "<tr class=""details"">")+19)
    $download = StringTrimLeft($download, StringInStr($download, "<span>")+5)
    $download1 = StringReplace(StringReplace(StringLeft($download, StringInStr($download, "<")-1), @lf, ""), " ", "")
    $download1 = StringReplace($download1, "euro;", " €")
    $download = StringTrimLeft($download, StringInStr($download, "bg"">")+3)
    $download2 = StringReplace(StringReplace(StringLeft($download, StringInStr($download, "<")-1), @lf, ""), " ", "")
    $download2 = StringReplace($download2, "%", " %")
    GUICtrlSetData($label1, "")
    if StringInStr($download1, ",") and StringInStr($download2, ",") then
    GUICtrlSetData($titel, $titel1)
    GUICtrlSetData($label1, $download1)
    GUICtrlSetData($label2, $download2)
    if StringInStr($download2, "-") Then
    GUICtrlSetBkColor($label1, 0xff0000)
    GUICtrlSetBkColor($label2, 0xff0000)
    else
    GUICtrlSetBkColor($label1, 0x00ff00)
    GUICtrlSetBkColor($label2, 0x00ff00)
    endif
    Else
    msgbox(16, "Fehler", "Ungültige URL")
    endif
    Else
    msgbox(16, "Fehler", "Ungültige URL")
    endif
    GUICtrlSetData($url, "")
    endfunc

    [/autoit] [autoit][/autoit] [autoit]

    func _quit()
    if msgbox(68,"boersennews.de","Wirklich beenden?") = 6 then Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    sleep(20)
    WEnd

    [/autoit]

    $download1 entspricht dem kurs, $download2 der veränderung. diese beiden kannst du auch ohne gui in eine ini schreiben.

  • Hier ein Beispiel mit StringRegExp. Ein entsprechendes Tutorial für StringRegExp gibt's in meiner Signatur.

    [autoit]

    Local $sURL, $sHTML, $aArray

    [/autoit][autoit][/autoit][autoit]

    $sURL = "http://www.boersennews.de/markt/aktien/microsoft-us5949181045/87089/profile?source=g&gclid=CJ7-xd3s0qcCFQuEzAodIgyJ_A&rd=1"
    $sHTML = BinaryToString(InetRead($sURL, 1), 4)
    $aArray = StringRegExp($sHTML, '(-?\d+,\d+%?).+\s+<div class="xsmall">', 3)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "", _
    "Letzter Kurs: " & $aArray[0] & @LF & _
    "Veränderung: " & $aArray[1] & @LF & _
    "Vortag: " & $aArray[2] & @LF & _
    "Eröffnungskurs: " & $aArray[3] _
    )

    [/autoit]