INI sortieren nach 11. Stelle

  • Moin Moin.

    Wie sortiere ich die INI Einträge nach dem Buchstaben / der Zahl an elfter Stelle?

    Gruss,
    Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Der Wunsch ist zwar sehr seltsam :D - aber auch dieser wird erfüllt:

    [autoit]

    #include <array.au3>
    #cs
    [section]
    schlüssel_A_bla=1
    schlüssel_Z_bla=2
    schlüssel_V_bla=3
    schlüssel_B_bla=4
    schlüssel_O_bla=5
    schlüssel_E_bla=6
    schlüssel_Q_bla=7
    schlüssel_R_bla=8
    schlüssel_B_bla=9
    #ce
    ;~ $arINI = IniReadSection($INI, 'section')
    ;~ liefert:
    Local $arINI[10][2] = [ _
    [9], _
    ['schlüssel_A_bla',1], _
    ['schlüssel_Z_bla',2], _
    ['schlüssel_V_bla',3], _
    ['schlüssel_B_bla',4], _
    ['schlüssel_O_bla',5], _
    ['schlüssel_E_bla',6], _
    ['schlüssel_Q_bla',7], _
    ['schlüssel_R_bla',8], _
    ['schlüssel_X_bla',9]]

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

    Local $ar2Sort[UBound($arINI)-1][4]
    For $i = 1 To UBound($arINI) -1
    $ar2Sort[$i-1][0] = StringLeft($arINI[$i][0], 10)
    $ar2Sort[$i-1][1] = StringMid($arINI[$i][0], 11, 1)
    $ar2Sort[$i-1][2] = StringRight($arINI[$i][0], StringLen($arINI[$i][0])-11)
    $ar2Sort[$i-1][3] = $arINI[$i][1]
    Next
    _ArraySort($ar2Sort, 0, 0, 0, 1)
    _ArrayDisplay($ar2Sort)
    Local $arINIWrite[UBound($ar2Sort)][2]
    For $i = 0 To UBound($ar2Sort) -1
    $arINIWrite[$i][0] = $ar2Sort[$i][0] & $ar2Sort[$i][1] & $ar2Sort[$i][2]
    $arINIWrite[$i][1] = $ar2Sort[$i][3]
    Next
    ;~ Array zurückschreiben
    ;~ IniWriteSection($INI, 'section', $arINIWrite, 0)

    [/autoit]
  • Hallo Bug.

    Meine INI schaut so aus und sie wächst, das heißt ich kann keine Länge fest nennen:

    Spoiler anzeigen
    [autoit]


    [Sek1]
    163537902A=cddfllt
    163537904C=gse3106f
    163537904d=afe7319
    04472wq711=b2932sft

    [/autoit]

    Aber mit dem von Dir geposteten geht das nicht. Sortieren soll er nach dem Gleichheitszeichen in folgender Art: 0123456789ABCDE......... XYZ

    Oder bin ich zu blond das mit Deinem Script zu sortieren. Darfst gerne ehrlich sein. Frau kann das besser ab als so mancher Mann. ;)

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag

    Hallo!

    Ini-Dateien sind grundsätzlich ungeeignet, um Daten in irgendeiner Forum sortiert aufzunehmen. Man müsste immer beim Einlesen neu sortieren, was schreckliche Performance bedeuten würde.
    Alternative wäre die Daten in SQLite zu packen, da kann man direkt mit SQL sortieren und das ist sehr schnell.
    Und wie so oft hätte man diesen Tipp gleich geben können, wenn man gewusst hätte, um was es geht ;).

    peethebee

  • Wenn es unbedingt eine ini sein muss, die nach den Werten sortiert ist, einfach _Arraysort verwenden :)

    [autoit]

    $iniRead = IniReadSection("","")
    _ArraySort($iniRead,0,1,0,1) ; ab Position 1 nach der 2. "Spalte" sorieteren
    IniWriteSection("","",$iniRead)

    [/autoit]