INI auslesen und dabei alles in GUI schreiben

  • Hey :)
    habe mal wieder ein Problem mit meinem Script...

    zur zeit sieht es so aus:

    [autoit]

    Global $hGui,$sTitle

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

    $p1 = iniread (@DesktopDir & "\Daten.ini","5","Allgemein","")
    $p2 = iniread (@DesktopDir & "\Daten.ini","6","Allgemein","")
    $p3 = Iniread (@DesktopDir & "\Daten.ini","7","Allgemein","")
    $p4 = Iniread (@DesktopDir & "\Daten.ini","8","Allgemein","")
    $p5 = Iniread (@DesktopDir & "\Daten.ini","9","Allgemein","")
    $p6 = Iniread (@DesktopDir & "\Daten.ini","10","Allgemein","")
    $p7 = Iniread (@DesktopDir & "\Daten.ini","11","Allgemein","")
    $p8 = Iniread (@DesktopDir & "\Daten.ini","12","Allgemein","")
    $p9 = Iniread (@DesktopDir & "\Daten.ini","13","Allgemein","")
    $p10 = Iniread (@DesktopDir & "\Daten.ini","14","Allgemein","")
    $p11 = Iniread (@DesktopDir & "\Daten.ini","15","Allgemein","")
    $p12 = Iniread (@DesktopDir & "\Daten.ini","16","Allgemein","")
    $p13 = Iniread (@DesktopDir & "\Daten.ini","17","Allgemein","")

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

    ;MsgBox (0,"123",$p1 &@CRLF& $p2 &@CRLF& $p3)

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

    _gui1 ("Installationsvorgang")

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

    Func _gui1 ($sTitle)

    $hGui = GUICreate($sTitle,300,500)
    GUICtrlCreateLabel ($p1,5,10)
    GUICtrlCreateLabel ($p2,5,30)

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    EndSwitch
    Wend
    EndFunc

    [/autoit]


    Beispiel ini sieht so aus:
    [6]
    Allgemein=Everest Ultimate
    [7]
    Allgemein=Combined Media Community Codec Pack
    [8]
    Allgemein=ACE Codec Pack


    soo... jetzt soll wie man oben sieht ein Label erstellt werden mit dem Text von der INI... aber nicht immer stehen auch an den stellen etwas.. wie es jetzt mit $p1 der fall ist...
    dann bleibt 1 Zeile (das label) frei...
    das möchte ihc unterbinden... dh. irgendwie muss der sehen "aaaah da steht nix dann kommt hier nicht die $p1 rein sondern die $p2

    aber wie mache ich das mit mehreren einträgen in der INI wenn da z.B. die 1. drei nicht drinnestehn das der die 1. drei labels sozusagen löscht und dann nur die aufschreibt... sozusagen eine lückenlose liste...

    wie geht so etwas am besten?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Frage hald mit if $sp1 = "" Then den label wo $sp2 Steht
    else dein label mit $sp1
    Endif

  • @ simon wie sähe das genau aus wenn man da 40 Programme hat?

    und dann wurde das 7. nicht ausgewählt das 19. nicht... dann muss man ja unmengen an IF funktionen haben oder? kann mir deine weise nicht klar machen...

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Oder du machst eine txt und schreibst alles untereinander und machst dann StringSplit für ein @Crlf und wenn du es einträgst fragst du ab ob es leer ist und wenn es leer ist schreibst du nichts rein wenn ja dann den ihnalt und hinterherr hast du 40 Variablen oder jenachdem wie viele gefüllt sind :)

  • HM habe es jetzt so ausgebaut das der alles in die INI schreibt...

    wenn ich die gewählten checkboxes prüfe, und sie checked sind dann schreibt er den namen da rein und wenn sie nicht checked sind dann nicht...


    wie sehen die Befehle aus?

    bruache ja einmal einen um die gewählten in die datei einzufügen dann einmal um die da rauszulesen ...

    kann mir da wer helfen? oder gibt es noch eine gute lösung mit der INI?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

    • Offizieller Beitrag

    Ich würde mit IniReadSection die gewählten Programme aus der INI auslesen . Mit dem daraus entstandenen Array innerhalb einer For Next Schleife die Labels befüllen . Da kannst das ganze aber auch in einem GUICtrlCreateEdit anzeigen , das du mit dem Style $ES_READONLY versiehst . Somit kann keiner was in dein Edit schreiben aber es zeigt alles an.

    PS: Wenn du mal einen halbwegs lauffähigen Code posten würdest, hätte bestimmt schon einer eine Lösung für dich parat.

  • Okay habs mal lauffähig gemacht...

    Hier mein Script (lauffähig):

    [autoit]

    Global $hGui,$sTitle

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

    $p1 = iniread (@DesktopDir & "\Daten.ini","5","Allgemein","")
    $p2 = iniread (@DesktopDir & "\Daten.ini","6","Allgemein","")
    $p3 = Iniread (@DesktopDir & "\Daten.ini","7","Allgemein","")
    $p4 = Iniread (@DesktopDir & "\Daten.ini","8","Allgemein","")
    $p5 = Iniread (@DesktopDir & "\Daten.ini","9","Allgemein","")
    $p6 = Iniread (@DesktopDir & "\Daten.ini","10","Allgemein","")
    $p7 = Iniread (@DesktopDir & "\Daten.ini","11","Allgemein","")
    $p8 = Iniread (@DesktopDir & "\Daten.ini","12","Allgemein","")
    $p9 = Iniread (@DesktopDir & "\Daten.ini","13","Allgemein","")
    $p10 = Iniread (@DesktopDir & "\Daten.ini","14","Allgemein","")
    $p11 = Iniread (@DesktopDir & "\Daten.ini","15","Allgemein","")
    $p12 = Iniread (@DesktopDir & "\Daten.ini","16","Allgemein","")
    $p13 = Iniread (@DesktopDir & "\Daten.ini","17","Allgemein","")

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

    ;MsgBox (0,"123",$p1 &@CRLF& $p2 &@CRLF& $p3)

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

    _gui1 ("Installationsvorgang")

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

    Func _gui1 ($sTitle)

    $hGui = GUICreate($sTitle,300,500)
    GUICtrlCreateLabel ($p1,5,10)
    GUICtrlCreateLabel ($p2,5,30)
    GUICtrlCreateLabel ($p3,5,50)
    GUICtrlCreateLabel ($p4,5,70)
    GUICtrlCreateLabel ($p5,5,90)
    GUICtrlCreateLabel ($p6,5,110)
    GUICtrlCreateLabel ($p7,5,130)
    GUICtrlCreateLabel ($p8,5,150)
    GUICtrlCreateLabel ($p9,5,170)
    GUICtrlCreateLabel ($p10,5,190)
    GUICtrlCreateLabel ($p11,5,210)
    GUICtrlCreateLabel ($p12,5,230)
    GUICtrlCreateLabel ($p13,5,250)

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    EndSwitch
    Wend
    EndFunc

    [/autoit]

    Hier die INI die Daten.ini heißt und sich auf dem Desktop befinden muss...

    Wie man beim Ausführen des Scriptes sieht... es entstehen lücken da in der INI... (die durch ein anderes Script erstellt wird) nicht alle vorhandenen Checkboxes geklickt wurden und somit auch nicht alle Programme dort reingeschrieben wurden (-> in der ini stehen sozusagen nur die Programme die installiert werden sollen)


    Jetzt möchte ich das sie ohne lücken angezeigt werden und untereinander stehen...


    Ich kenne mich noch nicht so gut mit arrays etc. aus also bitte nicht einfach ein paar namen gegen den kopf schmeißen wenns geht :love:

    ich hoffe ihr könnt mir jetzt besser helfen :rolleyes:

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Spoiler anzeigen
    [autoit]

    Global $hGui, $sTitle

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

    $IniSections = IniReadSectionNames(@DesktopDir & "\Daten.ini")
    Global $P[UBound($IniSections)]
    For $i = 1 To UBound($IniSections) - 1
    $P[$i] = IniRead(@DesktopDir & "\Daten.ini", $IniSections[$i], "Allgemein", "")
    Next
    ;MsgBox (0,"123",$p1 &@CRLF& $p2 &@CRLF& $p3)

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

    _gui1("Installationsvorgang")
    Func _gui1($sTitle)
    $hGui = GUICreate($sTitle, 300, 500)
    $height = 10
    For $i = 1 To UBound($P) - 1
    GUICtrlCreateLabel($P[$i], 5, $height)
    $height += 20
    Next

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case - 3
    Exit
    EndSwitch
    WEnd
    EndFunc ;==>_gui1

    [/autoit]