IniReadSectionNames unvollständig

  • Ich bins wieder. .__.

    Ich habe ein Problem mit IniReadSectionNames.
    Es wird eine korrekte Ini, mit etwa 4500 Sections ausgelesen, ich bekomme aber ein Array mit nur 1803 (+0) Einträgen zurück.

    In der englischen Hilfe steht folgendes:

    Zitat

    Only the first 32767 chars are taken in account in an section due to Win9x compatibility.

    Da mein Englisch nicht gerade Weltklasse ist,
    verstehe ich es nicht ganz... Werden höchstens die ersten 32767 Zeichen aus einer Sektion ausgegeben, oder insgesamt?
    Wohl eher ersteres...
    Na ja, jedenfalls sind alle Einträge zusammen kürzer, als 32767.

    [autoit]

    Global $s_INI = "C:\Users\Administrator\Documents\datenbank.ini"
    Global $a_Section = IniReadSectionNames ($s_INI)
    ConsoleWrite ("elements: " & $a_Section[0] &@CRLF)

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

    Global $s_String
    For $i = 1 To $a_Section[0] Step + 1
    $s_String &= $a_Section[$i]
    Next
    ConsoleWrite ("length: " & StringLen ($s_String) &@CRLF)

    [/autoit]
    Zitat von Console

    elements: 1803
    length: 30955

    Wieso wird nicht die komplette Ini ausgelesen?

    Einmal editiert, zuletzt von $var (18. Dezember 2011 um 13:26)

  • hast du schon überprüft, ob die ini standardkonform is?
    wenn sie es nicht ist, kann des zu einem abbruch des lesevorgang führen

    MFG inventor

    wenn's weitere Fragen gibt -> PN
    wenn da keine Antwort kommt, überdenk deine Frage noch mal

  • Iniread macht ab einer bestimmten Grösse schlapp, da gehts dann nur mit fileread.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Grad mal ne Ini mit 4500 Sections erstellt

    Spoiler anzeigen


    [Section 1]
    Test=1
    [Section 2]
    Test=2
    ...
    ...
    [Section 4500]
    Test = 4500

    Hier war bei IniReadSectionNames() bei etwa 2600 Sektionsnamen schluss
    Danach hab ich die Sektionsnamen gekürzt auf [S 1] - [S 4500] und IniReadSectionNames() gab mir alle 4500 Sektionsnamen zurück
    Scheint also wirklich auf die 32767 Zeichen begrenzt zu sein

    gruß

    Edit: Probier mal das hier:

    [autoit]

    #include <Array.au3>
    #include <String.au3>

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

    Global $test = _IniReadSectionNames(@ScriptDir & "\test.ini")
    _ArrayDisplay($test)

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

    Func _IniReadSectionNames($INI)
    $File = FileOpen($INI)
    $Inhalt = FileRead($File)
    FileClose($File)
    $SectionNames = _StringBetween($Inhalt, "[", "]")
    _ArrayInsert($SectionNames, 0, UBound($SectionNames))

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

    Return $SectionNames
    EndFunc ;==>_IniReadSectionNames

    [/autoit]
    UNPLEASANT SPOILER

    You just lost the game!

    Einmal editiert, zuletzt von shadow667 (18. Dezember 2011 um 12:59)