If Frage bei GUI

  • hallo,
    ich habe einer frage:
    wie kann ich machen, dass die Radios ausgelesen werden, wenn ich Button1 drücke??
    also ich habe es bis jetzt immer mit IF gemacht aber in diesem Fall bringt da irgentwie nur probleme.
    Z.B sagt das Programm, das beide Radios gedrückt sind.


    Code
    #include #include 
    #Region ### START Koda GUI section ### Form=$Form1 = GUICreate("LoL Patcher Installer", 510, 311, 193, 125)$Progress1 = GUICtrlCreateProgress(40, 8, 433, 25)$Button1 = GUICtrlCreateButton("Installieren", 376, 56, 105, 25, 0)$Radio1 = GUICtrlCreateRadio("Standart Installation", 48, 56, 113, 17)GUICtrlSetState ($radio1, $GUI_CHECKED)$Label1 = GUICtrlCreateLabel("Alle Normalen Einstellungen", 64, 72, 135, 17)$Radio2 = GUICtrlCreateRadio("Benutzerdefinierte Installation", 48, 112, 169, 17)$Group1 = GUICtrlCreateGroup("Installationspfad:", 56, 136, 337, 65)$Input1 = GUICtrlCreateInput("", 72, 160, 201, 21)$Button2 = GUICtrlCreateButton("Durchsuchen...", 288, 160, 91, 25, 0)GUICtrlCreateGroup("", -99, -99, 1, 1)$Group2 = GUICtrlCreateGroup("League of Legends Installationspfad:", 56, 208, 337, 65)$Input2 = GUICtrlCreateInput("", 72, 232, 201, 21)$Button3 = GUICtrlCreateButton("Durchsuchen...", 288, 232, 91, 25, 0)GUICtrlCreateGroup("", -99, -99, 1, 1)GUISetState(@SW_SHOW)#EndRegion ### END Koda GUI section ###
    While 1	$nMsg = GUIGetMsg()	Switch $nMsg		Case $GUI_EVENT_CLOSE			Exit		Case $Button1 			Copy ();Progress ()		Case $Button2			$dialog2=FileSelectFolder ("Installationspfad auswählen",@HomeDrive)			If Not @error Then GUICtrlSetData($Input1, $dialog2)			
    	EndSwitchWEnd				Func Progress ()			GUICtrlSetData ($Button1 ," Stop")			For $1=1 to 100				GUICtrlSetData ($Progress1,$1)		Sleep (60)			Next					EndFunc										Func Copy ()						$Radio111=GUICtrlRead ($Radio1)			$Radio222=GUICtrlRead ($Radio2)	If $Radio111=True Then		MsgBox (0,"","if")				#cs ----------------------------------------------------------------------------				$username=@UserName				$Scribtdir=@ScriptDir				_Zip_UnzipAll($scribtdir&"\LoL Patcher.zip","C:\Users\"&@UserName&"\AppData\Roaming",1)				Sleep (2000)				FileCreateShortcut ( "C:\Users\"&$username&"\AppData\Roaming\LoL Patcher\League of Legends patcher.exe", @DesktopDir&"\LoL Patcher")								#ce ----------------------------------------------------------------------------			EndIf						If $Radio222=True Then  				MsgBox (0,"","elseif")				;$username=@UserName				;$Scribtdir=@ScriptDir				;$Input11=GUICtrlRead($Input1)				;$Input22=GUICtrlRead($Input2)				;_Zip_UnzipAll($scribtdir&"\LoL Patcher.zip",$Input11,1)				;FileCreateShortcut ($Input11&"\League of Legends patcher.exe", @DesktopDir&"\LoL Patcher")			Else 				MsgBox(0,"as","else")				EndIf			EndFunc


    DIe Funktionen sind deshalb auskommentiert, damit ich herausfinden kann, ob das programm funktioniert.
    über hilfe würde ich mich freuen bin halt nicht so der Profi drin.
    MFg


    EDIT:
    wie kann ich hier einen Code einbinden; bei mir ist er hintereinander geschrieben, wenn ich ihn einfüge

    2 Mal editiert, zuletzt von Lol11 (25. Februar 2011 um 14:46)

  • Spoiler anzeigen
    [autoit]

    #include <Zip.au3>
    #include <GUIConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("LoL Patcher Installer", 510, 311, 193, 125)
    $Progress1 = GUICtrlCreateProgress(40, 8, 433, 25)
    $Button1 = GUICtrlCreateButton("Installieren", 376, 56, 105, 25, 0)
    $Radio1 = GUICtrlCreateRadio("Standart Installation", 48, 56, 113, 17)
    GUICtrlSetState($Radio1, $GUI_CHECKED)
    $Label1 = GUICtrlCreateLabel("Alle Normalen Einstellungen", 64, 72, 135, 17)
    $Radio2 = GUICtrlCreateRadio("Benutzerdefinierte Installation", 48, 112, 169, 17)
    $Group1 = GUICtrlCreateGroup("Installationspfad:", 56, 136, 337, 65)
    $Input1 = GUICtrlCreateInput("", 72, 160, 201, 21)
    $Button2 = GUICtrlCreateButton("Durchsuchen...", 288, 160, 91, 25, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("League of Legends Installationspfad:", 56, 208, 337, 65)
    $Input2 = GUICtrlCreateInput("", 72, 232, 201, 21)
    $Button3 = GUICtrlCreateButton("Durchsuchen...", 288, 232, 91, 25, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Copy()
    ;Progress ()
    Case $Button2
    $dialog2 = FileSelectFolder("Installationspfad auswählen", @HomeDrive)
    If Not @error Then GUICtrlSetData($Input1, $dialog2)
    EndSwitch
    WEnd
    Func Progress()
    GUICtrlSetData($Button1, " Stop")
    For $1 = 1 To 100
    GUICtrlSetData($Progress1, $1)
    Sleep(60)
    Next
    EndFunc ;==>Progress
    Func Copy()
    If BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) = $GUI_CHECKED Then
    MsgBox(0, "", "Radio1")
    ElseIf BitAND(GUICtrlRead($Radio2), $GUI_CHECKED) = $GUI_CHECKED Then
    MsgBox(0, "", "Radio2")
    EndIf
    EndFunc ;==>Copy

    [/autoit]
  • [autoit]

    Func Copy ()

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

    If guictrlread($radio1)=$gui_checked Then MsgBox (0,"","Standart Installation wird durchgeführt")

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

    If guictrlread($radio2)=$gui_checked then msgbox(0, "", "Benutzerdefinierte Installation wird durchgeführt")

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

    endfunc

    [/autoit]


    Biddeschön!

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

    • Offizieller Beitrag
    Zitat

    wie kann ich die ersten 3 Bytes auslesen?

    Werde mal genauer. Von was willst du die ersten 3 Bytes?

    Generell ginge das so:

    [autoit]

    ; Erstellt 0x10203040 als Binärdatum
    $binary = Binary("0x10203040")
    $extract = BinaryMid($binary, 1, 3)
    MsgBox(0, "Das erste bis dritte Byte lautet: ", $extract)

    [/autoit]
  • Von einer Datei:

    [autoit]


    $sFile = @ScriptDir & "\test.au3"

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

    $bBinary = StringToBinary(FileRead($sFile))
    $bExtract = BinaryMid($bBinary, 1, 3)
    MsgBox(0, "Ersten drei Bytes lauten: ", $bExtract)

    [/autoit]

    Das gleiche hast du aber schon in einem anderen Thread gefragt.

  • also ich möchte die ersten drei bytes auslesen, um zu erfahren, ob es eine .Rar datei ist oder .zip
    das ganze nur, weil es kein UDF für zip UND rar gibt -.-
    aber in dem anderen Thread meinte jemand es gehe mit Fileread
    ist das auch richtig?

  • Versteh das Problem nicht wirklich. Warum sollte man hier überhaupt die Bytes auslesen für die Dateityp Bestimmung?
    1. kann man das wohl in 99% aller Fälle an der Dateiendung erkennen, wer benennt ein Archiv schon absichtlich mit der falschen Endung?
    2. Kann 7zip beide Formate und besitzt eine eigene Automatik die den richtigen Typ ermittelt wenn ich mich nicht irre.

    Ob das in der genannten UDF auch so ist weiss ich nicht, aber man kann das genausogut auch ohne UDF machen und anstelle der DLL einfach eine cmdline Version der 7zip.exe beilegen.
    Diese ruft man dann einfach per run() mit den entsprechenden Parametern auf.