IniRead problem

  • Hallo,
    ich habe ein grosses Problem mit Iniread :(
    Unzwar, soll mein Tool äöüÄÖÜß richtig verarbeiten.
    Ok alle schön und gut. Nur jetzt das in meiner INI:

    Ini

    Ö=%C3%96
    ö=%C3%B6
    ä=%C3%A4
    Ä=%C3%84
    ü=%C3%BC
    Ü=%C3%9C
    ß=%C3%9F

    Und es ignoriert die Gross und klein schreibung. Wie kann ich ändern ?

  • Ne eigentlich nicht, weil du ja nur den Pfad angibst und die Sektion und keinen Schlüssel.

    Zeig mal dein Script.
    Übrigens wenn du bei einer If-Anweisung auf Groß- bzw. Kleinschreibung prüfen willst, dann musst du == nehmen anstatt =.

  • dürfte Case Sensitive arbeiten:

    Spoiler anzeigen
    [autoit]

    Func _IniRead($sFileName,$sSection,$sKey,$sDefault)
    $aRet = StringRegExp(FileRead($sFileName),"(?x)\[\Q"&$sSection&"\E\](?>\s*.*)*?\s*\Q"&$sKey&"\E=(.+)",3)
    If Not IsArray($aRet) Then Return $sDefault
    Return $aRet[0]
    EndFunc

    [/autoit]
  • So sieht mein Script aus :)

    [autoit]

    $buchstaben = IniReadSection ("data\data.ini","Buchstaben")
    Local $Edit=GUICtrlRead ($Edit1)
    For $i = 1 To UBound ($buchstaben)-1
    $Edit = StringReplace ($Edit,$buchstaben[$i][0],$buchstaben[$i][1])
    Next

    [/autoit]
  • Hallo Freaky,

    das klappt wenn du in der Ini auch den Sectionname angibst:

    [autoit]

    $buchstaben = IniReadSection("data\data.ini", "Buchstaben")
    Local $Edit = 'äöüßÄÖÜ';
    ;GUICtrlRead ($Edit1)
    For $i = 1 To UBound($buchstaben) - 1
    $Edit = StringReplace($Edit, $buchstaben[$i][0], $buchstaben[$i][1])
    Next
    MsgBox(0, "", $Edit)
    For $i = 1 To UBound($buchstaben) - 1
    $Edit = StringReplace($Edit, $buchstaben[$i][1], $buchstaben[$i][0])
    Next
    MsgBox(0, "und wieder zurück", $Edit)

    [/autoit]

    INI:

    Code
    [Buchstaben]
    Ö=%C3%96
    ö=%C3%B6
    ä=%C3%A4
    Ä=%C3%84
    ü=%C3%BC
    Ü=%C3%9C
    ß=%C3%9F

    mfg (Auto)Bert

  • So hier?

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>

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

    $hGui = GUICreate("Gui", 200, 200)
    $hEdit = GUICtrlCreateEdit("", 10, 10, 180, 100)
    $hChange = GUICtrlCreateButton("Ändern", 30, 120, 80, 25)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hChange
    $aIni = IniReadSection(@ScriptDir & "\Data.ini", "Buchstaben")
    ;_ArrayDisplay($aIni)
    $sEdit = GUICtrlRead($hEdit)
    For $i = 1 To $aIni[0][0]
    $sEdit = StringReplace($sEdit, $aIni[$i][0], $aIni[$i][1], 0, 1)
    Next
    GUICtrlSetData($hEdit, $sEdit)
    EndSwitch
    WEnd

    [/autoit]
  • [autoit]

    Func Change($string)
    $string = StringReplace($string, "%", "%25")
    $string = StringReplace($string, "ä", "%C3%A4")
    $string = StringReplace($string, "ö", "%C3%B6")
    $string = StringReplace($string, "ü", "%C3%BC")
    $string = StringReplace($string, "!", "%21")
    $string = StringReplace($string, '"', "%22")
    $string = StringReplace($string, "§", "%C2%A7")
    $string = StringReplace($string, "$", "%24")
    $string = StringReplace($string, "&", "%26")
    $string = StringReplace($string, "/", "%2F")
    $string = StringReplace($string, "+", "%2B")
    $string = StringReplace($string, " ", "+")
    $string = StringReplace($string, "(", "%28")
    $string = StringReplace($string, ")", "%29")
    $string = StringReplace($string, "=", "%3D")
    $string = StringReplace($string, "?", "%3F")
    $string = StringReplace($string, "[", "%5B")
    $string = StringReplace($string, "]", "%5D")
    $string = StringReplace($string, "{", "%7B")
    $string = StringReplace($string, "}", "%7D")
    $string = StringReplace($string, "ß", "%C3%9F")
    $string = StringReplace($string, ",", "%2C")
    $string = StringReplace($string, ":", "%3A")
    $string = StringReplace($string, ";", "%3B")
    $string = StringReplace($string, "#", "%23")
    $string = StringReplace($string, "~", "%7E")
    $string = StringReplace($string, "²", "%C2%B2")
    $string = StringReplace($string, "³", "%C2%B3")
    $string = StringReplace($string, "<", "%3C")
    $string = StringReplace($string, ">", "%3E")
    $string = StringReplace($string, "|", "%7C")
    $string = StringReplace($string, "^", "%5E")
    $string = StringReplace($string, "°", "%C2%B0")
    $string = StringReplace($string, "´", "%C2%B4")
    $string = StringReplace($string, "@", "%40")
    $string = StringReplace($string, "€", "%E2%82%AC")
    Return $string
    EndFunc ;==>Change

    [/autoit]


    Ich benutze diese Funktion klappt auch wunderbar

  • Dann empfehle ich doch eher diese Variante: Die ist kürzer

    Spoiler anzeigen
    [autoit]

    Func _URLEncode($sData)
    ; Author: Prog@ndy
    Local $nChar, $aData = StringSplit(BinaryToString(StringToBinary($sData, 4), 1), "")
    $sData = ""
    For $i = 1 To $aData[0]
    $nChar = Asc($aData[$i])
    Switch $nChar
    Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
    $sData &= $aData[$i]
    Case 32
    $sData &= "+"
    Case Else
    $sData &= "%" & Hex($nChar, 2)
    EndSwitch
    Next
    Return $sData
    EndFunc ;==>_URLEncode

    [/autoit]
  • Er will ja nur bestimmte Zeichen ersetzt haben, also deswegen die Ini. Und dies macht mein Script aus meinem vorigen Post.