Hallo, hab folgendes Programm für die Schule ertellt (unten die Downloadversion)
In Zeile 43 gibt's einen Fehler. Was hab ich falsch gemacht? Ich komm nicht drauf
Spoiler anzeigen
#include <IE.au3>
#include <Inet.au3>
#include <Math.au3>
#include <string.au3>
#include <array.au3>
#include <GUIConstants.au3>
$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
$Anzahl = $Anzahl - 1
[/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)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]Start()
Bilder()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func Start()
For $i = 0 To $Anzahl Step 1
$Stein[$i] = IniRead("config.ini", "Steine", $i + 1, "0")
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)
If $i = $Anzahl Then ExitLoop
Next
EndFunc ;==>Start
Func Bilder()
Global $Downloads = UBound($Bild)
Global $DownloadDir = @ScriptDir & "/Mineralienbilder/"
[/autoit] [autoit][/autoit] [autoit];Gui
GUICreate("Test", 276, 76, 193, 115)
GUISetBkColor(0)
Global $Progress1 = GUICtrlCreateProgress(8, 8, 262, 9)
Global $Progress2 = GUICtrlCreateProgress(8, 24, 262, 9)
Global $StatLab = GUICtrlCreateLabel("", 8, 59, 262, 15)
GUICtrlSetColor(-1, 0xffffff)
Global $Button = GUICtrlCreateButton("Start", 8, 37, 262, 20, 0)
GUISetState()
[/autoit] [autoit][/autoit] [autoit];Mainwhile
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button
If Not _Download() Then
;Wenn es bei _Download ein error gab (Abbrechen wurde gedrückt)
GUICtrlSetData($Progress1, 0)
GUICtrlSetData($Progress2, 0)
GUICtrlSetState($Button, $GUI_DISABLE)
GUICtrlSetData($Button, "Abgebrochen")
Sleep(1500)
GUICtrlSetData($Button, "Neustart")
GUICtrlSetState($Button, $GUI_ENABLE)
Else
;Wenn es kein error gab
GUICtrlSetData($Button, "Erfolgreich")
GUICtrlSetData($StatLab, "Komplett")
EndIf
EndSwitch
WEnd
;Funktionen
[/autoit] [autoit][/autoit] [autoit]$Text = ""
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To $Anzahl
;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 =' & $DownloadDir & "\" & $Stein[$i] & ' 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ärte:</td><td>' & $Haerte[$i] & '</td><td> </td><td> </td></tr><tr><td colspan="4">&nbssp;</td></tr>'
Next
$oIE = _IECreate()
_IEBodyWriteHTML($oIE, $Text)
EndFunc ;==>Bilder
[/autoit] [autoit][/autoit] [autoit]Func _Download()
Local $i, $iSize, $iBuf, $msg, $iProz, $iOldProz, $sFileName
GUICtrlSetData($Button, "Abbrechen (0%)"); Setze button
For $i = 0 To $Downloads - 1
$iSize = InetGetSize($Bild[$i]);Holt sich die größe des downloads
$sFileName = StringTrimLeft($Bild[$i], StringInStr($Bild[$i], "/", 1, -1));Der Dateiname des downlaods
InetGet($Bild[$i], $DownloadDir & "\" & $Stein[$i], 0, 1);Datei wird gedownloadet
GUICtrlSetData($StatLab, "Download: " & $sFileName & " (0%)");Setze statuslabel
While @InetGetActive; Solange der Download aktiv ist
$msg = GUIGetMsg(); Falls Abbrechen gedrückt wird
If $msg = $Button Then Return InetGet("abort") - 1 ; Return ((Returnwert von Inetget = 1) - 1) = 0
$iProz = Round(100 * @InetGetBytesRead / $iSize);Gibt die Prozentzahl (gerundet) zurück
If $iProz <> $iOldProz Then;Wenn neue Prozentangaben <> alte Prozentangaben dann.. (Verhinder mögliches Flickern von Label/Button)
$iOldProz = $iProz;Setze alte Prozentangabe = neue Prozentangabe
GUICtrlSetData($Progress1, $iProz);Setze Progress 1 mit Prozentangabe des momentanen downlaods
GUICtrlSetData($Progress2, $iBuf + ($iProz / $Downloads));Setze Progress 2 auf die Insgesamte Prozentanzahl
GUICtrlSetData($Button, "Abbrechen (" & Round($iBuf + ($iProz / $Downloads)) & "%)");Setze Abbrechenbutton
GUICtrlSetData($StatLab, "Download: " & $sFileName & " (" & $iProz & "%)");Setze Statuslabel mit Dateiname des downlaods und prozentangabe des downlaods
EndIf
Sleep(50) ;Damit Prozessorlast < 100%
WEnd
$iBuf += (100 / $Downloads)
Next
Return 1
EndFunc ;==>_Download
Die config.ini als Test:
Spoiler anzeigen
[Allgemein]
Anzahl=5
[Steine]
1=Gold
2=Silber
3=Dolomit
4=Aluminium
5=Kohle