akira2891

[SOLVED] INI file read data and put in list

11 posts in this topic

#1 ·  Posted (edited)

Hi i have problem with reading data from INI file.

So i need when i put in search field "Test" to get in listbox all results under number 1= with "Test" in name and so my list need to look like this

[5018] Test name 2
[5218] Test name 1
[5458] Test name

and when i click on item from list that he appears on $hNameInput

Look on image http://prntscr.com/83i7a6

this is my ini file

[5018]
0=test1
1=Test name 2
2=0
3=1
[5218]
0=test1
1=Test name 1
2=0
3=1
[5458]
0=test1
1=Test name
2=0
3=1
[5468]
0=test1
1=Name no 1
2=0
3=1
[5345]
0=test1
1=Name no 2
2=0
3=1

And here is autoit code

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=C:\Users\Mario\Documents\renamer.kxf
$hGUI = GUICreate("Form1", 684, 364, 607, 439)
GUICtrlCreateGroup(" Search ", 8, 16, 342, 297)
GUICtrlCreateLabel("Search for text", 22, 40, 73, 17)
$hSearchInput = GUICtrlCreateInput("", 23, 60, 185, 21)
$hFinddAllButton = GUICtrlCreateButton("Find All", 222, 58, 75, 25)
GUICtrlCreateLabel("Found Items ( click to edit )", 22, 102, 131, 17)
$hList = GUICtrlCreateList("", 22, 120, 313, 175)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup(" Edit Item", 355, 16, 321, 137)
GUICtrlCreateLabel("Name", 372, 40, 32, 17)
$hNameInput = GUICtrlCreateInput("", 371, 60, 289, 21)
$hSaveButton = GUICtrlCreateButton("Save", 587, 112, 75, 25)
GUICtrlCreateLabel("Item ID", 372, 95, 38, 17)
$hItemID = GUICtrlCreateInput("", 369, 112, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 328, 105, 25)
$hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 328, 105, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $file

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hOpenIniButton
            __openINI()
        Case $hFinddAllButton

            Local $iFileExists = FileExists($file)

            If Not $iFileExists Then
                MsgBox(48, "Error", "test.ini not found!")
            EndIf

            Local $aArray = IniReadSection($file, "5018")

            If Not @error Then
                For $i = 1 To $aArray[0][0]
                   GUICtrlSetData($hList, $aArray[$i][1] & @CRLF)
                Next
             EndIf

    EndSwitch
WEnd

; open ini
Func __openINI()

    Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)")

    If FileExists($file) Then

        $sFile = FileOpen($file)

        If @error Then
            MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
        Else
            GUICtrlSetState($hOpenIniButton, $GUI_DISABLE)
        EndIf
    Else
        MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
    EndIf

EndFunc

 

Edited by akira2891

Share this post


Link to post
Share on other sites



For the concept, try this

Case $hFinddAllButton
            If Not FileExists($file) Then
                MsgBox(48, "Error", "test.ini not found!")
            EndIf

            $sections = IniReadSectionNames($file)
            $test = GuiCtrlRead($hSearchInput)   ; read the search input
            For $i = 1 to $sections[0]    ; loop through sections
                $tmp = IniRead($file, $sections[$i], "1", "not found")  ; read key named "1"
                If StringInStr($tmp, $test) Then GUICtrlSetData($hList, "[" & $sections[$i] & "]   " & $tmp)
            Next

You will have to add some error checking ... and look again in the helpfile for all the Ini* functions  :)

1 person likes this

Share this post


Link to post
Share on other sites

Thanks man u saved me, im working on this all day and didnt find any solution

Share this post


Link to post
Share on other sites

I updated script a bit but when i get all items listed when i click on item how i can get data from that item to put them in $hItemID and $hNameInput

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileConstants.au3>
#include <GuiListView.au3>


#Region ### START Koda GUI section ###
$hGUI = GUICreate("Form1", 684, 364, 607, 439)
GUICtrlCreateGroup(" Search ", 8, 16, 342, 297)
GUICtrlCreateLabel("Search for text", 22, 40, 73, 17)
$hSearchInput = GUICtrlCreateInput("", 23, 60, 185, 21)
$hFinddAllButton = GUICtrlCreateButton("Find All", 222, 58, 75, 25)
GUICtrlCreateLabel("Found Items ( click to edit )", 22, 102, 131, 17)
;~ $hList = GUICtrlCreateList("", 22, 120, 313, 175)
$hList = GUICtrlCreateListView("", 22, 120, 313, 175)
; Add columns
_GUICtrlListView_InsertColumn($hList, 0, "ID", 50)
_GUICtrlListView_InsertColumn($hList, 1, "Item name", 350)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup(" Edit Item", 355, 16, 321, 137)
GUICtrlCreateLabel("Name", 372, 40, 32, 17)
$hNameInput = GUICtrlCreateInput("", 371, 60, 289, 21)
$hSaveButton = GUICtrlCreateButton("Save", 587, 112, 75, 25)
 GUICtrlCreateLabel("Item ID", 372, 95, 38, 17)
$hItemID = GUICtrlCreateInput("", 369, 112, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 328, 105, 25)
$hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 328, 105, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $file, $sFile

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $hOpenIniButton
            _FileOpen()
        Case $hFinddAllButton
            If Not FileExists($file) Then
                MsgBox(48, "Error", "test.ini not found!")
            EndIf

            $sections = IniReadSectionNames($file)
            $test = GuiCtrlRead($hSearchInput)   ; read the search input
            For $i = 1 to $sections[0]    ; loop through sections
                $tmp = IniRead($file, $sections[$i], "1", "not found")  ; read key named "1"
;~                 If StringInStr($tmp, $test) Then GUICtrlSetData($hList, "[" & $sections[$i] & "]   " & $tmp)
                If StringInStr($tmp, $test) Then
                    _GUICtrlListView_BeginUpdate($hList)
                    GUICtrlCreateListViewItem("[" & $sections[$i] & "]|" & $tmp, $hList) ; populate list with founded items
                    _GUICtrlListView_EndUpdate($hList)
                EndIf
            Next

    EndSwitch
WEnd

; open file
Func _FileOpen()

    Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.*)")

    If FileExists($file) Then

        $sFile = FileOpen($file)

        If @error Then
            MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
        Else
            GUICtrlSetState($hOpenIniButton, $GUI_DISABLE)
        EndIf
    Else
        MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
    EndIf

EndFunc

 

Share this post


Link to post
Share on other sites

I make this to work somehow, but i don't know how do i update a list when i edit item and save it, save work and i need to reopen program too see that is saved.

Is there any way that after i press Save button to refresh list with same search data ?

So like this :

- search items - works

- populate list with founded items - works

- when i click on item it show under $hNameInput and when i edit it and press save it write to ini - works

- refresh data after i update ini and put edited + other data that were in list depends on $hSearchInput field - DON'T WORKS

 

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileConstants.au3>
#include <GuiListView.au3>
#include <StringConstants.au3>
#include <StructureConstants.au3>

#Region ### START Koda GUI section ###
$hGUI = GUICreate("Form1", 702, 533, 513, 305)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateGroup(" Search ", 10, 107, 342, 385)
GUICtrlCreateLabel("Search for text", 24, 131, 73, 17)
$hSearchInput = GUICtrlCreateInput("", 25, 151, 185, 21)
$hFinddAllButton = GUICtrlCreateButton("Find All", 224, 149, 75, 25)
GUICtrlCreateLabel("Found Items ( click to edit )", 24, 193, 131, 17)
$hList = GUICtrlCreateList("", 24, 211, 313, 266)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup(" Edit Item ", 364, 108, 329, 137)
GUICtrlCreateLabel("Name", 381, 132, 32, 17)
$hNameInput = GUICtrlCreateInput("", 380, 152, 289, 21)
$hSaveButton = GUICtrlCreateButton("Save", 596, 204, 75, 25)
GUICtrlCreateLabel("Item ID", 381, 187, 38, 17)
$hItemID = GUICtrlCreateInput("", 378, 204, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Pic1 = GUICtrlCreatePic("C:\Users\Mario\Desktop\Untitled-1.jpg", 0, 0, 702, 100)
$hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 500, 105, 25)
$hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 500, 105, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $file, $sFile, $matches

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $hOpenIniButton
            _FileOpen()
        Case $hList
            GUICtrlSetData($hNameInput, StringRegExpReplace(GUICtrlRead($hList), '\[\d+\] ', ''))
        Case $hFinddAllButton
            If FileExists($file) Then
                GUICtrlSetData($hList, '')

                For $i=0 To UBound($matches)-1 Step 2
                    If StringInStr($matches[$i+1], GUICtrlRead($hSearchInput)) Then GUICtrlSetData($hList, '['&$matches[$i]&'] '&$matches[$i+1])
                Next
            EndIf

        Case $hSaveButton
            If FileExists($file) Then
                IniWrite($file, StringRegExpReplace(GUICtrlRead($hList), '\[(\d+)\].+', '$1'), 1, GUICtrlRead($hNameInput)) ; write from input $hName to ini file
                If Not @error Then

                EndIf
            EndIf
    EndSwitch
WEnd

; open file
Func _FileOpen()

    Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)")

    If FileExists($file) Then
        $sFile = FileOpen($file)
        If @error Then
            MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
        Else
            GUICtrlSetState($hOpenIniButton, $GUI_DISABLE)
            $matches = StringRegExp(FileRead($file), "\[(\d+)\]\r\n(?:\d+=.+\r\n)*?1=(.+)\r\n(?:\d+=.+\r\n)+", 3)
            GUICtrlSetData($hNameInput, StringRegExpReplace(GUICtrlRead($hList), '\[\d+\] ', ''))
        EndIf
    Else
        MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
    EndIf

EndFunc ;=> file open

 

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

This is a bit tricky
The most convenient way is to build an array for the items found, because the indexes of selected items will be the same in the listbox and in this array
Then you can use this array to store the index in the main array of the selected item
The listbox auto sort must be disabled
When you save, the main array needs to be updated too - it is necessary if you plan to work later on other values
I placed some _ArrayDisplay() for better view  :)

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileConstants.au3>

$hGUI = GUICreate("Form1", 702, 533, 513, 305)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateGroup(" Search ", 10, 107, 342, 385)
GUICtrlCreateLabel("Search for text", 24, 131, 73, 17)
$hSearchInput = GUICtrlCreateInput("", 25, 151, 185, 21)
$hFinddAllButton = GUICtrlCreateButton("Find All", 224, 149, 75, 25)
GUICtrlSetState($hFinddAllButton, $GUI_DISABLE)
GUICtrlCreateLabel("Found Items ( click to edit )", 24, 193, 131, 17)
$hList = GUICtrlCreateList("", 24, 211, 313, 266, BitOR($WS_BORDER, $WS_VSCROLL))  ; disable sort !!
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup(" Edit Item ", 364, 108, 329, 137)
GUICtrlCreateLabel("Name", 381, 132, 32, 17)
$hNameInput = GUICtrlCreateInput("", 380, 152, 289, 21)
$hSaveButton = GUICtrlCreateButton("Save", 596, 204, 75, 25)
GUICtrlSetState($hSaveButton, $GUI_DISABLE)
GUICtrlCreateLabel("Item ID", 381, 187, 38, 17)
$hItemID = GUICtrlCreateInput("", 378, 204, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Pic1 = GUICtrlCreatePic("C:\Users\Mario\Desktop\Untitled-1.jpg", 0, 0, 702, 100)
$hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 500, 105, 25)
$hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 500, 105, 25)
GUISetState(@SW_SHOW)


Global $file, $sFile, $matches[0][3], $afound[0][3], $index

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $hOpenIniButton
            _FileOpen()

        Case $hList
            $index = _GUICtrlListBox_GetCurSel($hList)
            If $index <> -1 Then GUICtrlSetData($hNameInput, $afound[$index][2]) 

        Case $hFinddAllButton
            GUICtrlSetData($hList, '')
            Redim $afound[0][3]
            For $i = 0 To UBound($matches)-1
                 If StringInStr($matches[$i][2], GUICtrlRead($hSearchInput)) Then 
                       _ArrayAdd($afound, $matches[$i][0] &'|'& $matches[$i][1] &'|'& $matches[$i][2])
                       GUICtrlSetData($hList, '[' & $matches[$i][1] &'] '& $matches[$i][2])
                 EndIf              
            Next
_ArrayDisplay($afound, "found")   ; debug 

        Case $hSaveButton
              $newitem = GUICtrlRead($hNameInput)
              IniWrite($file, $afound[$index][1], "1", $newitem)   ; update ini
              $matches[$afound[$index][0]][2] = $newitem     ; update main array
                   ; update listbox
              _GUICtrlListBox_ReplaceString($hList, $index, "[" & $afound[$index][1] & "] " & $newitem)
_ArrayDisplay($matches, "$matches after save")   

    EndSwitch
WEnd


Func _FileOpen()   ; open file
    Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)")
    If @error Then Return

    $sFile = FileOpen($file)
    If @error Then
           MsgBox(48, "Error", "Error = " & @error & ", Extended = " & @extended)
    Else
         GUICtrlSetState($hOpenIniButton, $GUI_DISABLE)
         GUICtrlSetState($hFinddAllButton, $GUI_ENABLE)
         GUICtrlSetState($hSaveButton, $GUI_ENABLE)
         Local $sections = IniReadSectionNames($file)
         Redim $matches[$sections[0]][3]
         For $i = 1 to $sections[0]    ; loop through sections
                $tmp = IniRead($file, $sections[$i], "1", "not found")  ; read key named "1"
                $matches[$i-1][0] = $i-1   ; index
                $matches[$i-1][1] = $sections[$i]  ; section name
                $matches[$i-1][2] = $tmp  ; value of key 1
         Next
_ArrayDisplay($matches, "$matches creation for key 1")  
     EndIf
EndFunc ;=> file open

 

Edited by mikell

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

I tried your's code and it works good with small ini files, but u can't read bigger ones.

And other thing is when i Save edited item, it update list ( works fine ), and update ini file ( works fine ) and when i click on that edited item on a list it appears normal on Edit item name $hNameInput look on image

wBZcIGT.png

Try this code works very fast and give me results i need, just problem is with updating list after edit

$matches = StringRegExp(FileRead('test.ini'), "\[(\d+)\]\r\n(?:\d+=.+\r\n)*?1=(.+)\r\n(?:\d+=.+\r\n)+", 3)
GUICreate('GUI', 300, 150, Default, Default, 0x10C80000)
$list = GUICtrlCreateList('', 10, 10, 280, 90)
$input = GUICtrlCreateInput('', 10, 100, 280, 20)
GUICtrlSetLimit ($input, 50, 3)
$btnSearch = GUICtrlCreateButton('Search', 10, 125, 140, 20)
$btnSave = GUICtrlCreateButton('Save', 150, 125, 140, 20)
While True
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $list
            GUICtrlSetData($input, StringRegExpReplace(GUICtrlRead($list), '\[\d+\] ', ''))
        Case $btnSearch
            GUICtrlSetData($list, '')
            For $i=0 To UBound($matches)-1 Step 2
                If StringInStr($matches[$i+1], GUICtrlRead($input)) Then GUICtrlSetData($list, '['&$matches[$i]&'] '&$matches[$i+1])
            Next
        Case $btnSave
            IniWrite('test.ini', StringRegExpReplace(GUICtrlRead($list), '\[(\d+)\].+', '$1'), 1, GUICtrlRead($input))
    EndSwitch
WEnd

 

Edited by akira2891

Share this post


Link to post
Share on other sites

For the other thing there is one line to add (update $afound)

Case $hSaveButton
              $newitem = GUICtrlRead($hNameInput)
              IniWrite($file, $afound[$index][1], "1", $newitem)   ; update ini
              $afound[$index][2] = $newitem     ; update $afound array<<<<<<<<<<<<<<<<<<<<<<<<<<
              $matches[$afound[$index][0]][2] = $newitem     ; update main array
                   ; update listbox
              _GUICtrlListBox_ReplaceString($hList, $index, "[" & $afound[$index][1] & "] " & $newitem)

The ini I used to test was the one from post #1, could you post a 'bigger one' for which the code doesn't work ?

 

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Try search for "blode" without quotes, and use mine example code i gave u to see how it work fast.

U will need to get 19 or 20 results.

Item.zip

Edited by akira2891

Share this post


Link to post
Share on other sites

Here it is. Last try

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <FileConstants.au3>

$hGUI = GUICreate("Form1", 702, 533, 513, 305)
GUISetBkColor(0xFFFFFF)
GUICtrlCreateGroup(" Search ", 10, 107, 342, 385)
GUICtrlCreateLabel("Search for text", 24, 131, 73, 17)
$hSearchInput = GUICtrlCreateInput("", 25, 151, 185, 21)
$hFinddAllButton = GUICtrlCreateButton("Find All", 224, 149, 75, 25)
GUICtrlSetState($hFinddAllButton, $GUI_DISABLE)
GUICtrlCreateLabel("Found Items ( click to edit )", 24, 193, 131, 17)
$hList = GUICtrlCreateList("", 24, 211, 313, 266, BitOR($WS_BORDER, $WS_VSCROLL))  ; disable sort !!
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup(" Edit Item ", 364, 108, 329, 137)
GUICtrlCreateLabel("Name", 381, 132, 32, 17)
$hNameInput = GUICtrlCreateInput("", 380, 152, 289, 21)
$hSaveButton = GUICtrlCreateButton("Save", 596, 204, 75, 25)
GUICtrlSetState($hSaveButton, $GUI_DISABLE)
GUICtrlCreateLabel("Item ID", 381, 187, 38, 17)
$hItemID = GUICtrlCreateInput("", 378, 204, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Pic1 = GUICtrlCreatePic("C:\Users\Mario\Desktop\Untitled-1.jpg", 0, 0, 702, 100)
$hOpenIniButton = GUICtrlCreateButton("Open INI for Edit", 8, 500, 105, 25)
$hWriteIniButton = GUICtrlCreateButton("Write Modified INI", 123, 500, 105, 25)
GUISetState(@SW_SHOW)


Global $file, $sFile, $matches[0][3], $afound[0][3], $index

While 1
    Switch GUIGetMsg()
        Case -3
            Exit
        Case $hOpenIniButton
            _FileOpen()

        Case $hList
            $index = _GUICtrlListBox_GetCurSel($hList)
            If $index <> -1 Then GUICtrlSetData($hNameInput, $afound[$index][2]) 

        Case $hFinddAllButton
            GUICtrlSetData($hList, '')
            Redim $afound[0][3]
            For $i = 0 To UBound($matches)-1
                 If StringInStr($matches[$i][2], GUICtrlRead($hSearchInput)) Then 
                       _ArrayAdd($afound, $matches[$i][0] &'|'& $matches[$i][1] &'|'& $matches[$i][2])
                       GUICtrlSetData($hList, '[' & $matches[$i][1] &'] '& $matches[$i][2])
                 EndIf              
            Next
_ArrayDisplay($afound, "found")   ; debug 

        Case $hSaveButton
              $newitem = GUICtrlRead($hNameInput)
              IniWrite($file, $afound[$index][1], "1", $newitem)   ; update ini
              $afound[$index][2] = $newitem     ; update $afound array
              $matches[$afound[$index][0]][2] = $newitem     ; update main array
                   ; update listbox
              _GUICtrlListBox_ReplaceString($hList, $index, "[" & $afound[$index][1] & "] " & $newitem)
;_ArrayDisplay($matches, "$matches after save")   

    EndSwitch
WEnd


Func _FileOpen()   ; open file
    Global $file = FileOpenDialog("Open INI for edit", "", "INI files (*.ini)")
    If @error Then Return
        $tmp = StringRegExp(FileRead($file), '(?s)\[(\d+)\].*?\v1=(\V+)', 3)
; _ArrayDisplay($tmp)  
        Redim $matches[UBound($tmp)/2][3]
         For $i = 0 to UBound($tmp)-1 step 2
                $matches[$i/2][0] = $i/2
                $matches[$i/2][1] = $tmp[$i]
                $matches[$i/2][2] = $tmp[$i+1]
         Next
         GUICtrlSetState($hOpenIniButton, $GUI_DISABLE)
         GUICtrlSetState($hFinddAllButton, $GUI_ENABLE)
         GUICtrlSetState($hSaveButton, $GUI_ENABLE)
_ArrayDisplay($matches, "$matches creation for key 1")  

EndFunc ;=> file open

 

1 person likes this

Share this post


Link to post
Share on other sites

#11 ·  Posted (edited)

I was trying all way's and no problems were with small ini files, and for this i even try to convert it to text and then search for matched string but no sucess because as i see AutoIt reading bigger files is so slow.

That's it works like charm thank you very much.

 

#request for close topic, problem solved.

Edited by akira2891

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • DagSa
      By DagSa
      I have some problem to make my ini-file work properly. Purpose is to install program at windows 7 - 10 but think it work at XP also.
       I have included a fragment of code, but all my errors are there. It should be run by user privilege.
      The test code point out what is not working:
      Code is create a directory in %appdata%, and create a ini-file if not there. (This write of file work!)
      When change the settings only one of the two parameters are changed. One value should be changed (don't work), and the other should be added (work!). Editing manually by notepad does not allow to save it.  I want the code to be able to change everything in ini-file.
      1. First of all, the ini-file is not writeable by user when look at file properties and also directory properties. Any way to change this?
      2. Is %appdata% wrong directory? I want all user to have access to the settings but its enough if only by control of the program.
      It make me crazy its writeable sometimes, and sometimes not. Any ideas?
      /Dag
      AppData_INI-test.au3
    • l3ill
      By l3ill
      Hi All,
      Here is a little GUI I built a while back to learn how to use INI files to store information ( variables ) between opening and closing certain programs.
      I just recently pulled it back out and cleaned it up and debugged it, if you find any bugs please kill them.
      The FTP connection part was just so it would have purpose... 
      To cut down on clutter there are no labels, hover mouse over to see what things are.
      cya,
      Bill
    • meows
      By meows
      Func Button2Click() ;==> SonoLvl2 ******************************************************* SoundPlay(@ScriptDir & "\schoolbell.wav", 1) Local $Test2 = IniRead(@ScriptDir & "\runer.ini", "Levels", "LComplete1", "Default Value") If $Test2 = 1 Then ; $updatepid = RunWait(@ScriptDir & "\SonoLvl2\SonoLvl2_.exe", "", @SW_SHOWDEFAULT) Else MsgBox(4096, "", "You did not complete Lesson1") EndIf ;MsgBox($MB_SYSTEMMODAL, "Bug Report Environment", _DebugBugReportEnv()) IniWrite(@ScriptDir & "\runer.ini", "Levels", "LComplete2", "2") EndFunc ;==>Button2Click I have tried PID checks and updatepid per the help file and they just didn't work out. and usually caused errors. Then (not included I tried making a separate function to write to a INI file. that was a lesson in frustration and defeat. It worked.. just the same as the code in the function now. as soon as you click the button and the runwait line starts the ini gets updated. The file can only be written to after runwait is running is closed. Also tried the ProcessWait, ProcessWaitClose,  ShellExecute, ShellExecuteWait
      Then in desperation I tried a Debug i read about
      Func Button2Click() ;==> SonoLvl2 ******************************************************* $__iLineNumber=162 & ' - SoundPlay(@ScriptDir & "\schoolbell.wav", 1)•' SoundPlay(@ScriptDir & "\schoolbell.wav", 1) $__iLineNumber=163 & ' - Local $Test2 = IniRead(@ScriptDir & "\runer.ini", "Levels", ...•' Local $Test2 = IniRead(@ScriptDir & "\runer.ini", "Levels", "LComplete1", "Default Value") $__iLineNumber=164 & ' - If $Test2 = 1 Then•' If $Test2 = 1 Then $__iLineNumber=165 & ' - $updatepid = RunWait(@ScriptDir & "\SonoLvl2\SonoLvl2_.exe", ...•' $updatepid = RunWait(@ScriptDir & "\SonoLvl2\SonoLvl2_.exe", "", @SW_SHOWDEFAULT) Else $__iLineNumber=167 & ' - MsgBox(4096, "", "You did not complete Lesson1")•' MsgBox(4096, "", "You did not complete Lesson1") EndIf ;MsgBox($MB_SYSTEMMODAL, "Bug Report Environment", _DebugBugReportEnv()) $__iLineNumber=173 & ' - IniWrite(@ScriptDir & "\runer.ini", "Levels", "LComplete2", ...•' IniWrite(@ScriptDir & "\runer.ini", "Levels", "LComplete2", "2") EndFunc ;==>Button2Click unfortunately I was not smart enough to get it to work for me. What I wanted was a Debugger that explains what each line does and why. Then I figured out that isn't happening.
    • lgvlgv
      By lgvlgv
      Hi all!
      Im trying to execute a program that are specified in a ini file like this but shellexecute ignore the @windowsdir or any @variable i put in, what im i doing wrong?


      ; Ini file [Utforskaren] exe= explorer.exe arg= , C: wrk= @WindowsDir ico= @WindowsDir & "\explorer.exe" dsc= Utforskaren
      the execute is from an array like this

      [3]|explorer.exe|, C:|@WindowsDir|@WindowsDir & "\explorer.exe"|Utforskaren



      ShellExecute($aIcon[$iIconIndex][0], $aIcon[$iIconIndex][1], $aIcon[$iIconIndex][2]) ConsoleWrite("! Consolewrite ->Shellexecute: " & $aIcon[$iIconIndex][0] &" | "& $aIcon[$iIconIndex][1] &" | "& $aIcon[$iIconIndex][2] & @CRLF)

      and result is this

      ! Consolewrite ->Shellexecute: explorer.exe | , C: | @WindowsDir