Moin Moin.
Wie sortiere ich die INI Einträge nach dem Buchstaben / der Zahl an elfter Stelle?
Gruss,
Crazy-A.
Moin Moin.
Wie sortiere ich die INI Einträge nach dem Buchstaben / der Zahl an elfter Stelle?
Gruss,
Crazy-A.
Der Wunsch ist zwar sehr seltsam - 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]]
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)
Hallo Bug.
Meine INI schaut so aus und sie wächst, das heißt ich kann keine Länge fest nennen:
[Sek1]
163537902A=cddfllt
163537904C=gse3106f
163537904d=afe7319
04472wq711=b2932sft
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.
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)