Pablos544 Posted April 19, 2017 Share Posted April 19, 2017 Dear All, I'm trying to modify an .ini file created by another application. Problem with this file is that there is no [SECTION] this=that all the way down. So in order to attempt to change a value of a key I used IniWrite leaving the "section" parameter blank (""). What AutoIt3 actually did is create a new key at the bottom of the file: [] this=that leaving the original key unmodified. Then by trying to be clever I made it even worse. I thought I could just try deleting the original key IniDelete($filename , "", "this") which didn't even touch the file at all! I checked the file versions, nothing modified. But what's even more confusing is that the IniDelete function returns 1 (success) I'm really confused. Thanks in advance for help! Pablo. Link to comment Share on other sites More sharing options...
benners Posted April 19, 2017 Share Posted April 19, 2017 I think the function only returns 0 if the INI file does not exist or if the file is read-only (yep help file says so), so as long as these criteria were met, it's a success. You could try to write a section at the top of the file using filewriteline or similar, hopefully the parent application will ignore it and you can use ini functions. You could also try reading the file to an array and search for the key you want to update, change it then write the file back. Link to comment Share on other sites More sharing options...
Subz Posted April 19, 2017 Share Posted April 19, 2017 Just tested and it worked fine for me Local $sFileName = @ScriptDir & "\Filename.ini" IniWrite($sFileName, "", "This", "That") MsgBox(64, "IniRead", IniRead($sFileName, "", "This", "Something Else")) IniDelete($sFileName, "", "This") MsgBox(64, "IniRead", IniRead($sFileName, "", "This", "Something Else")) IniDelete($sFileName, "") As benners pointed out you could just insert a section name to the top of the file and then use the standard ini functions to read for example: Local $sFileRead = FileRead($sFileName) Local $hFileName = FileOpen($sFileName, 2) FileWrite($hFileName, "[Section]" & @CRLF & $sFileRead) FileClose($hFileName) Link to comment Share on other sites More sharing options...
Pablos544 Posted April 19, 2017 Author Share Posted April 19, 2017 (edited) Sup ppl. I think what the problem is I'm having here is that the INI file is not controlled by me. I'm taking a pre-configured INI file set up in a no-headings way. I don't really have control over it. So what Subz and Prodigy both advice is correct, but I am trying to modify existing keys that might already be in the untidy file. This seemingly is not what IniWrite and IniDelete have been designed for seemingly. Prodigy thanks for the heads up on what the return result really meant though. It's good to know. By the way Prodigy if you create a dummy section it works ok but leaves the original untidy one unchanged which is what I am trying not to have. Cheers, Pablo. Edited April 19, 2017 by Pablos544 correct Key to Section Link to comment Share on other sites More sharing options...
Bowmore Posted April 19, 2017 Share Posted April 19, 2017 If it does not have a section then it is not really an ini file. "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook Link to comment Share on other sites More sharing options...
Pablos544 Posted April 20, 2017 Author Share Posted April 20, 2017 I agree it is not really an INI file Bowmore, even though it's got a .ini extension. Link to comment Share on other sites More sharing options...
TheSaint Posted April 21, 2017 Share Posted April 21, 2017 Are you sure you tried the examples Subz gave ... substituting file names etc where applicable? If it works for him, it should for you, unless you need Admin Rights ... but then you created a section, so it appears that Admin is not needed. Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now