ok, danke, die GUI is gut, aber wie mache ich es, dass jetzt auf der Detailseite auch die richtigen informationen aus der INI ausgelesen werden.
Also ich weiß wie das mim auslesen geht, aber nich, wie es gehn soll, dass wenn man in der Hauptgui auf irgendeinen Button klickt, dass dann die richtige Information erscheint.
Downloadmanager für LAN-Webserver
-
Battlestr1k3 -
11. Januar 2009 um 12:54
-
-
Okej ich werde mal ein Script machen mit Erklärung^
mfg
Jautois -
danke für deine/eure bemühungen
-
So hier der Code:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>;> Variablen
[/autoit] [autoit][/autoit] [autoit]
Global $ahButton[8], $ahDescription[8], $title[8], $data
Dim $title[100], $details[1][1], $buffer, $text[3]
$text[0] = "Spiel: "
$text[1] = "Version: "
$text[2] = "Author: "$buffer = 1
[/autoit] [autoit][/autoit] [autoit];> Ini auslesen und den Variablen die Strings zuteilen
[/autoit] [autoit][/autoit] [autoit]
$var = IniReadSection("C:\games.ini", "Games")
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
Else
ReDim $details[4][$var[0][0]]For $i = 1 To $var[0][0]
[/autoit] [autoit][/autoit] [autoit]
$var1 = StringSplit($var[$i][1], ";")If $buffer < UBound($var1) - 1 Then
[/autoit] [autoit][/autoit] [autoit]
$buffer = UBound($var1)
ReDim $details[$buffer][$var[0][0]]
EndIf$details[0][$i - 1] = $var[$i][0]
[/autoit] [autoit][/autoit] [autoit]For $j = 1 To UBound($var1) - 1
[/autoit] [autoit][/autoit] [autoit]
$details[$j][$i - 1] = $var1[$j]
Next
Next
EndIf;> GUI erstellen
[/autoit] [autoit][/autoit] [autoit]
$dGui = GUICreate("Details", 290, 352, 193, 125)
$Pic1 = GUICtrlCreatePic("", 8, 8, 121, 100, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$gamename = GUICtrlCreateLabel($title[0], 136, 16, 130, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$versionnum = GUICtrlCreateLabel($title[1], 136, 40, 120, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$author = GUICtrlCreateLabel($title[2], 136, 64, 100, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$descript = GUICtrlCreateLabel("Beschreibung:", 8, 120, 100, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$download = GUICtrlCreateButton("&Download", 8, 312, 169, 33, 0)
$close = GUICtrlCreateButton("&Abbrechen", 184, 312, 97, 33, 0)
$Edit = GUICtrlCreateEdit("", 8, 144, 273, 161, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetData(-1, "Edit")
$hGui = GUICreate('Test', 320, 480, -1, -1)
GUISetState(@SW_SHOW, $hGui);> Buttons erstellen
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To 7
$ahButton[$i] = GUICtrlCreateButton('', 20 + Mod($i, 3) * 100, 10 + Int($i / 3) * 100, 64, 64, $BS_ICON)
GUICtrlSetImage(-1, 'shell32.dll', -44)
$ahDescription[$i] = GUICtrlCreateLabel($details[0][$i], 20 + Mod($i, 3) * 100, 80 + Int($i / 3) * 100, 64, 30, $SS_CENTER)
Next
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
If $nMsg[1] = $hGui Then
GUIDelete($hGui)
Exit
Else
If $nMsg[1] = $dGui Then
GUISetState(@SW_HIDE, $dGui)
EndIf
EndIf
Case $ahButton[0]
$data = 0
_SetData($data)
Case $ahButton[1]
$data = 1
_SetData($data)
Case $ahButton[2]
$data = 2
_SetData($data)
Case $ahButton[3]
$data = 3
_SetData($data)
Case $ahButton[4]
$data = 4
_SetData($data)
Case $ahButton[5]
$data = 5
_SetData($data)
Case $ahButton[6]
$data = 6
_SetData($data)
Case $ahButton[7]
$data = 7
_SetData($data)
EndSwitch
WEnd;> Detailseite Infos setzen
[/autoit]
Func _SetData($data)
GUICtrlSetData($gamename, $text[0] & $details[0][$data])
GUICtrlSetData($versionnum, $text[1] & $details[1][$data])
GUICtrlSetData($author, $text[2] & $details[2][$data])
GUICtrlSetData($Edit, $details[3][$data])
GUISetState(@SW_SHOW, $dGui)
EndFunc ;==>_SetDataIni-Datei:
Spoiler anzeigen
[Games]
Far Cry 2=v.1.0.2;Ubisoft;Far Cry 2 is the next-generation PC first-person shooter from Ubisoft
Warcraft 3=v.2.0.5;Bliz.;Warcraft 3...
UT2020=v.1.7;Ubisofti;UT2020..
MopMap=v.4.2;Xtior;MapMap
UT3=v.5.1;Ubisoft;UT3..
CSS=v.1.6;Steam;Css..
America's Army=v.2.3;American Ar.;AA....
AgeofEmpires 2=v.1.7;Bliz.;AOE...mfg
Jautois -
Also die was du als [] meinst sind Array's. Lies dir dazu am besten ein Tut. durch.
Kurz erklärt .. die Variable $ahButton hat 8 Speicherplätze.
Immer beginnend von 0:
$ahButton[0]
$ahButton[1]
$ahButton[2]
...
$ahButton[8]
9 Speicherplätze... 0;1;2;3;...;6;7;8Und danke für IniGetSection oder so, kannte ich noch nicht...
-
Jio war mein Fehler, hatte mich bei dem letzen Array vertan:
$ahButton[0]
$ahButton[1]
$ahButton[2]
...
$ahButton[7]Gut aufgepasst!
-
Vielen Dank für die Bemühungen, aber ich glaube, das mit der INI is mir zu kompliziert :pinch:
Ich werde das jetzt mal ohne probieren; also ich werde die ganzen Details in das Script integrieren, und die Clients müssen sich dann eben über ein kleines Update immer die neueste Versin ziehen. Ich weiß, dass das ziemlich umständlich ist, aber so verstehe ich es.
Jautois, dein Script habe ich einiger maßen verstanden, aber ich wüsste jetzt z.B. nich wie ich noch ein zusätzliches Feld machen, bzw. das mit den Downloadlinks hinbekommen würde -
Deine Variante ist dann aber viel umständlicher und zeitaufwendiger, als wenn du dich etwas hinsetzen würdest um das mit der ini zu verstehn. Aber kannst du natürlich machen wie du willst...
Zu dem Download: (Scriptergänzung, änder einfach die While-Schleife)
Spoiler anzeigen
[autoit]
[/autoit]
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
If $nMsg[1] = $hGui Then
GUIDelete($hGui)
Exit
Else
If $nMsg[1] = $dGui Then
GUISetState(@SW_HIDE, $dGui)
EndIf
EndIf
Case $ahButton[0]
$data = 0
_SetData($data)
Case $ahButton[1]
$data = 1
_SetData($data)
Case $ahButton[2]
$data = 2
_SetData($data)
Case $ahButton[3]
$data = 3
_SetData($data)
Case $ahButton[4]
$data = 4
_SetData($data)
Case $ahButton[5]
$data = 5
_SetData($data)
Case $ahButton[6]
$data = 6
_SetData($data)
Case $ahButton[7]
$data = 7
_SetData($data)
Case $download
MsgBox(1,"Download von " & $details[0][$data],"Download....")
InetGet("<deine Url>","<filename>") ; hier musst du dann den Namen des Spiels ($details[0][$data]) mit dem downloadlink verknüpfen. Am besten den Ordner der gedownloadet werden soll genau so nennen, dann kannst du machen:
;
InetGet("<deine Url>/" & $details[0][$data])
;
EndSwitch
WEnd -
das Problem ist, dass ich von dem script nicht alles verstehe und ich auch kein "Script-Kiddie" sein möchte und deinen Code einfach abkopieren möchte
-
Du kannst ruhig den Code kopieren. Wenn du Fragen hast frag gezielt.. zu allem was du nicht verstehst, dafür sind wir ja da
-
ja, ich bin doch erstaunt, dass es noch so hilfsbereite User gibt
-