MuffettsMan Posted April 7, 2015 Posted April 7, 2015 (edited) prob a stupid question but I can't find how to encapsulate the INI or change the delimiter.... I have an INI thats saving file names / paths like this: [Folders] D:\-= ID10T =-=D:\-= ID10T =- now when I try to read the Folders Section it bombs because of the = in the file name: ; Read the INI section labelled 'Folders'. This will return a 2 dimensional array. Local $aArray = IniReadSection(@ScriptDir & "\test.ini", "Folders") it spits out "D:-" any ideas? Edit: dang thats hard to read but the folder is named: D:\-= ID10T =- however ANY folder or file with an equal in it is gonna break the ini read Edit 2: atm all i know to attempt would be change the initial ini write to never use equals and just replace the text after the read thus the ini contents would look someting like: [Folders] D:\-† ID10T †-=D:\-† ID10T †- but i'm hoping there is something more elegant than that :-/ Edited April 7, 2015 by MuffettsMan Don't let that status fool you, I am no advanced memeber!
guinness Posted April 7, 2015 Posted April 7, 2015 My vote would be not to use Ini files and instead some db. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
MuffettsMan Posted April 7, 2015 Author Posted April 7, 2015 yah mysql would be my normal go to but this is for a standalone app and seemed kinda overkill Don't let that status fool you, I am no advanced memeber!
Zobengrauzis Posted April 7, 2015 Posted April 7, 2015 try _FileReadToArray and then loop through that array for getting results. or if you want use inireads, alter the initial ini file.
Solution Valuater Posted April 7, 2015 Solution Posted April 7, 2015 (edited) This worked... Just put your stuff at the end #include <MsgBoxConstants.au3> Example() Func Example() ; Create an INI section structure as a string. Local $sSection = "Title=AutoIt" & @CRLF & "Version=" & @AutoItVersion & @CRLF & "OS=D:\-= ID10T =-=D:\-= ID10T =-" ; Write the string to the section labelled 'General'. IniWriteSection(@TempDir & "\Example.ini", "General", $sSection) ; Read the INI section labelled 'General'. This will return a 2 dimensional array. Local $aArray = IniReadSection(@TempDir & "\Example.ini", "General") ; Check if an error occurred. If Not @error Then ; Enumerate through the array displaying the keys and their respective values. For $i = 1 To $aArray[0][0] MsgBox($MB_SYSTEMMODAL, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) Next EndIf ; Delete the INI file. FileDelete(@TempDir & "\Example.ini") EndFunc ;==>Example You did not use a "key" name with the "=" ie... Drive=D:-= ID10T =-=D:-= ID10T =- 8) Edited April 7, 2015 by Valuater
MuffettsMan Posted April 7, 2015 Author Posted April 7, 2015 This worked... Just put your stuff at the end #include <MsgBoxConstants.au3> Example() Func Example() ; Create an INI section structure as a string. Local $sSection = "Title=AutoIt" & @CRLF & "Version=" & @AutoItVersion & @CRLF & "OS=D:\-= ID10T =-=D:\-= ID10T =-" ; Write the string to the section labelled 'General'. IniWriteSection(@TempDir & "\Example.ini", "General", $sSection) ; Read the INI section labelled 'General'. This will return a 2 dimensional array. Local $aArray = IniReadSection(@TempDir & "\Example.ini", "General") ; Check if an error occurred. If Not @error Then ; Enumerate through the array displaying the keys and their respective values. For $i = 1 To $aArray[0][0] MsgBox($MB_SYSTEMMODAL, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1]) Next EndIf ; Delete the INI file. FileDelete(@TempDir & "\Example.ini") EndFunc ;==>Example You did not use a "key" name with the "=" ie... Drive=D:-= ID10T =-=D:-= ID10T =- 8) thx valuator - i guess my example was a bit foobar cause i was trying to save data as the key being a file name and the value being the path (or in the case of a folder they would both be the path - either way any = in the key would jack it up - i guess easier would be leave the key as static words and just string split the value to get the file name / path - thx Don't let that status fool you, I am no advanced memeber!
jchd Posted April 7, 2015 Posted April 7, 2015 (edited) FYI, SQLite is much simpler to setup and use with AutoIt than MySQL. That and guess what: it's primilarly aimed at being a flexible, convenient and efficient application data container. Edited April 7, 2015 by jchd This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe hereRegExp tutorial: enough to get startedPCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta. SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)
MuffettsMan Posted April 7, 2015 Author Posted April 7, 2015 i think i'm gonna scrap trying to write to ini files and try sqlite - i remembered why i needed the key to be the actual file name - inidelete can only delete by key not value such a pita Don't let that status fool you, I am no advanced memeber!
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