Und was jetzt schon wieder? ;) InetGet-Problem

  • Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <Inet.au3>
    #include <Math.au3>
    #include <string.au3>
    #include <array.au3>
    #include <GUIConstants.au3>

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

    $Anzahl = IniRead("config.ini", "Allgemein", "Anzahl", "0")
    If $Anzahl = "0" Then
    #Region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
    MsgBox(16, "Fehler", "Keine Anzahl gefunden. Abbruch.")
    #EndRegion --- CodeWizard generated code Start ---
    Exit
    EndIf

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

    Global $Stein[$Anzahl], $Formel[$Anzahl], $Farbe[$Anzahl], $Strichfarbe[$Anzahl], $Glanz[$Anzahl], $Vorkommen[$Anzahl], $Bild[$Anzahl], $Haerte[$Anzahl], $Eigenschaften[$Anzahl]

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

    GUICreate("Infos sammeln", 276, 76, 193, 115)
    GUISetBkColor(0)
    Global $Progress = GUICtrlCreateProgress(8, 8, 262, 9)

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

    GUISetState()

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

    Start()
    Download()
    Fertig()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func Start()
    For $i = 0 To $Anzahl - 1 Step 1
    $Name = IniRead("config.ini", "Steine", $i + 1, "0")
    $Stein[$i] = $Name
    If $Stein[$i] = "0" Then
    #Region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
    MsgBox(16, "Fehler", "Stein in Ini = 0")
    #EndRegion --- CodeWizard generated code Start ---
    Exit
    EndIf
    $html = _INetGetSource("http://www.mineralienatlas.de/lexikon/index.php/MineralData?mineral=" & $Stein[$i])
    If @error = 1 Then $Stein[$i] = $Stein[$i] & " wurde nicht gefunden."

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom">Chemische Formel<a name="ChemischeFormel" id="ChemischeFormel"></a></p>', '<tr class="mineraldata">')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Formel[$i] = $String

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom"><a href="Farbe" class="wiki">Farbe</a><a name="Farbe" id="Farbe"></a></p>', '<tr class="mineraldata">')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Farbe[$i] = $String

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom"><a href="Strichfarbe" class="wiki">Strichfarbe</a><a name="Strichfarbe" id="Strichfarbe"></a></p>', '<tr class="mineraldata">')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Strichfarbe[$i] = $String

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom"><a href="Glanz" class="wiki">Glanz</a><a name="Glanz" id="Glanz"></a></p>', '<tr class="mineraldata">')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Glanz[$i] = $String

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom"><a href="Vorkommen" class="wiki">Vorkommen</a><a name="Vorkommen" id="Vorkommen"></a></p>', '<tr class="mineraldata">')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Vorkommen[$i] = $String

    $Array = _StringBetween($html, '<td width="20" style="vertical-align: top; text-align: right;"><p class="tightenable top bottom"><a href="/VIEW.php?param=', '" class="named-interwiki"><img src="/VIEW')
    $String = _ArrayToString($Array, "")
    $html2 = _INetGetSource("http://www.mineralienatlas.de/VIEW.php?param=" & $String)
    $Array = _StringBetween($html2, '<td style="text-align: left;" colspan="2"><a href="javascript:history.go(-1)" style="text-decoraton:none"><img border="0" src="/', '" alt="Analcim" title="Analcim"></a></td>')
    $String = _ArrayToString($Array, "")
    $Bild[$i] = "http://www.mineralienatlas.de/" & $String

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom"><a href="Mohsh%E4rte" class="wiki">Mohshärte</a><a name="Mohshrte" id="Mohshrte"></a></p>', '</tr>')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Haerte[$i] = $String

    $Array = _StringBetween($html, '<td class="mineraldatakey"><p class="tightenable top bottom">Chem. Eigenschaften u. Tests<a name="ChemEigenschaftenuTests" id="ChemEigenschaftenuTests"></a></p>', '</tr>')
    $String = _ArrayToString($Array, "")
    $Array = _StringBetween($String, '<td class="mineraldata"><p class="tightenable top bottom">', '</p>')
    $String = _ArrayToString($Array, "")
    $Eigenschaften[$i] = $String

    $Rechnung = $Anzahl + 1
    $Rechnung = 100 / $Rechnung
    $Rechnung = $Rechnung * $i
    GUICtrlSetData($Progress, $Rechnung)
    Next
    EndFunc ;==>Start

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

    Func Download()
    Global $Verzeichniss
    GUICtrlSetData($Progress, 0)
    For $i = 0 To $Anzahl - 1 Step 1
    $Verzeichniss = @ScriptDir & "\Bilder\"&$Stein[$i]&".jpg"
    InetGet($Bild[$i], $Verzeichniss)
    $Rechnung = $Anzahl + 1
    $Rechnung = 100 / $Rechnung
    $Rechnung = $Rechnung * $i
    GUICtrlSetData($Progress, $Rechnung)
    Next
    EndFunc

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

    Func Fertig()

    $Text = ""
    For $i = 0 To $Anzahl - 1
    ;Machen der fertigen Seite
    $Text = $Text & '<table border = "1"><tr><td>Name:</td><td>' & $Stein[$i] & '</td><td>Nummer:</td><td>' & $i & '/' & $i + 1 & '-' & $Anzahl + 1 & '</td></tr><tr><td colspan = "4"><img src =' & $Verzeichniss & ' border="0"></tr><tr>'
    $Text = $Text & '<td>Formel:</td><td>' & $Formel[$i] & '</td><td>Farbe:</td><td>' & $Farbe[$i] & '</td></tr><tr><td>Strichfarbe:</td><td>' & $Strichfarbe[$i] & '</td><td>Glanz:</td><td>' & $Glanz[$i] & '</td></tr><tr><td>Vorkommen</td><td colspan="3">' & $Vorkommen[$i] & '</td></tr>'
    $Text = $Text & '<tr><td>Eigenschaften:</td><td colspan="3">' & $Eigenschaften[$i] & '</td></tr><tr><td>H&auml;rte:</td><td>' & $Haerte[$i] & '</td><td>&nbsp</td><td>&nbsp</td></tr><tr><td colspan="4">&nbsp;</td></tr>'
    Next

    $oIE = _IECreate()
    _IEBodyWriteHTML($oIE, $Text)
    EndFunc ;==>Fertig

    [/autoit]

    So, das ist mein neuer Code. Doch irgendwie funktioniert das mit InetGet nicht. Was tun ?(

    Außerdem hab ich noch ein Programm zum Ertsellen der Ini gemacht, eher Simpel. Trotzdem funktioniert es nicht. Wie kann ich dafür sorgen, dass es automatisch immer die Eingabe animmt und dann zum Schluss die Anzahl speichert??

    • Offizieller Beitrag

    Was sollden mit der Config.Au3 in die INI geschreiben werden ? Der Mineralienname ?

    • Offizieller Beitrag

    Dann schreibst du schon mal die INI Falsch . Dateiname ,Selektion,Anzahl,Bezeichnung , sollte aber Dateiname,Selektion,Bezeichnung,Anzahl sein .

    Edit : Was soll eigentlich in der Selektion Allgemein stehen ? Die Anzahl der Minaralien oder der Mineralieneinträge? Bei der Anzahl der Minaralien in der Selektion Steine würden die Steine Durchnummeriert bei Anzahl .

    Vergiss mein ganzes Geschreibsel, habn dein MINERALIENSCRIPT nicht untersucht gehabt. Oscars Lösung ist gut .

    • Offizieller Beitrag

    Ich habe die config.au3 mal etwas geändert, sodass man nur den Namen eingeben und [ENTER] drücken muss:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 354, 88, 193, 125)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
    $Input1 = GUICtrlCreateInput("", 24, 16, 321, 21, $ES_WANTRETURN)
    GUICtrlSetOnEvent(-1, "Input1Change")
    $Label1 = GUICtrlCreateLabel("", 24, 48, 65, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $Anzahl = 1
    Global $Timer = TimerInit()

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

    While 1
    Sleep(100)
    If TimerDiff($Timer) > 1000 Then GUICtrlSetData($Label1, '')
    WEnd

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

    Func Form1Close()
    IniWrite("config.ini", "Allgemein", "Anzahl", $Anzahl - 1)
    Exit
    EndFunc

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

    Func Form1Maximize()

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

    EndFunc

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

    Func Form1Minimize()

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

    EndFunc

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

    Func Form1Restore()

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

    EndFunc

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

    Func Input1Change()
    IniWrite("config.ini", "Steine", $Anzahl, GUICtrlRead($Input1, 0))
    $Anzahl += 1
    GUICtrlSetData($Input1, '')
    GUICtrlSetData($Label1, 'Gespeichert!')
    $Timer = TimerInit()
    EndFunc

    [/autoit]
  • Danke! Genial, daran hatte ich nicht gedacht! Aber wie ist das denn jetzt mit dem InetGet?? Bei mir klappt es nicht

    MS Vista
    IE 7
    Speicherort: Desktop

  • deine Funktion zur Erstellung des Bilderlinks

    [autoit]

    $Array = _StringBetween($html2, '<td style="text-align: left;" colspan="2"><a href="javascript:history.go(-1)" style="text-decoraton:none"><img border="0" src="/', '" alt="Analcim" title="Analcim"></a></td>')

    [/autoit]


    wird nur beim Analcim funktionieren

    mit

    [autoit]

    $Array = _StringBetween($html2, '<td style="text-align: left;" colspan="2"><a href="javascript:history.go(-1)" style="text-decoraton:none"><img border="0" src="/', '" alt="')

    [/autoit]


    sollte es auch für alle anderen Steinchen funktionieren vorausgesetzt natürlich es gibt überhaupt ein Bild das er runterladen kann und einen vorhandenen"Bilder"-Ordner in dem Script-Ordner