*.ini Verständnisproblem

  • Hallo liebe Community,

    seht es mir bitte nach, sollten hier Fragen auftauchen, die einem Experten die Augen rollen lassen ;)
    Auch wenn ich seit längerem hier angemeldet bin, kam ich leider nicht oft genug dazu, überhaupt was mit
    AutoIt zu tun oder mich nach und nach einzuarbeiten.
    Vorab -- ich versuche mich gerade an einem Autoinstaller für mich selbst.

    So nun zu meiner Frage:

    Ich habe eine ini Datei die aus verschiedenen Sektionen besteht. -> bsp. Serial.ini -> Sektion XXX
    Die Anzahl der Einträge in dieser Sektion kann natürlich unterschiedlich sein.

    Ich müsste nun nacheinander die Einträge aus der ini auslesen lassen und dann auch nacheinander in dem zu
    installierenden Programm wieder eintragen lassen. Und das so oft, wie in der Sektion ein Eintrag zu verzeichnen ist.
    Das zu installierende Programm lässt immer nur einen Serialeintrag zu.

    Muss ich das nun über ein Array gestallten oder kann man im Vorfeld auslesen, wieviele Lines es innerhalb einer Sektion
    gibt, das entsprechend in das Script einbauen und dann verarbeiten lassen?

    z.B.
    Ich habe 10 Einträge -> Auslesen der Einträge -> Anzahl der Einträge wird als Variabel definiert, die dann automatisch in dem
    Script den Eintrag definiert, wie oft diese Funktion abgearbeitet werden muss, bis die letzte Serial eingetragen ist.

    Ich wäre sehr dankbar über Ratschläge wie es geht, ich möchte keine Lösung in dem Sinn. Da greift dann doch der Ehrgeiz es
    erst mal selbst zu versuchen.

    Danke Vorab

    • Offizieller Beitrag

    Wenn ich das richtig verstanden habe, dann sieht die Ini ungefähr so aus:

    Spoiler anzeigen
    Code
    [Office]
    MSOffice=GREJ-ERJK-4330-4948-RDFK
    [Bildbearbeitung]
    Photoshop=RTZZ-OFOU-CMNF-PWKS-733K
    PhotoLine=46GT-HUER-POF6-9823-LLOP
    [AntiVirus]
    AntiVir=AABF-4656-TTTN-LKO9-0000-EERF
    [Dateiverwaltung]
    Total-Commander=RRR5-1234-6564-KFLG-PORE

    Zum auslesen könnte das Script dann so aussehen (Achtung! Das ist schon eine Lösung):

    Spoiler anzeigen
    [autoit]


    Global $sInifile = @ScriptDir & '\Serial.ini'
    Global $aSections = IniReadSectionNames($sInifile) ; Sektionsnamen auslesen
    If @error Then Exit MsgBox(0, 'Error', 'Inidatei fehlt oder fehlerhaft!')
    For $i = 1 To $aSections[0] ; alle Sektionen durchgehen
    Global $aSerial = IniReadSection($sInifile, $aSections[$i]) ; die Keys und die Werte der Sektion laden (2D-Array)
    If Not @error Then
    For $j = 1 To $aSerial[0][0] ; alle Keys und Werte anzeigen (innerhalb dieser Schleife würden dann die Installationen stattfinden)
    ConsoleWrite(StringFormat('Section: %s\nSoftware: %s\tSeriennr.: %s\n\n', $aSections[$i], $aSerial[$j][0], $aSerial[$j][1]))
    Next
    EndIf
    Next

    [/autoit]
  • Hallo BugFix,

    danke für Deine Antwort. Die von Dir genannten Referenzen kamen mir bei der Recherche auch in den Sinn.
    Letztendlich war ich mir aber nicht sicher ob diese richtig sind, daher danke für den Hinweis.

  • Hallo Oscar,

    auch Dir Danke für die Antwort.
    1.) Ja - das ist genau was ich meinte, so sollte es im Prinzip in der ini-Datei aussehen.

    2.) Ich gehe mal davon aus, dass man an der "Lösung" nicht vorbeikam, wenn man es so erklärt :rofl:
    Daher auch hier noch mal ein Dankeschön. Ich werde diesen Lösungsansatz erst einmal verwenden, um zu
    testen wie es mit meiner Situation funktioniert und dann mal das Script soweit einstellen. Ich hoffe das geht
    in Ordnung.

    Anhand Deiner Lösung kann ich mir zumindest mal ein genaueres Bild der Funktionalität machen ;)

    Thx