kartune Posted March 28, 2018 Posted March 28, 2018 Hi, i would like to know if there is a possible way to use subsections for ini files? For example, my ini file would look something like this: Clientname.ini [Info] Country=USA Type=Distributor [Costs] [[JAN]] <----- subsection cost1=---- cost2=---- [[FEB]] cost1=---- cost2=---- [Sales] [[JAN]] <----- subsection sale1=---- sale2=---- [[FEB]] sale1=---- sale2=---- [Profits] [[JAN]] <----- subsection prof1=---- prof2=---- [[FEB]] prof1=---- prof2=---- The sales would be inputed everyday by the script, and then whenever viewed, i would be using an array to view every sale/cost/profit under the subsection Thanks for your time!
Subz Posted March 29, 2018 Posted March 29, 2018 In short no, however to get around this I would use something like below: You can then use a function to create different reports based upon month or costs, profits, sales or both, simple example below: expandcollapse popup#include <Array.au3> #include <String.au3> $aReportSection = _Report("", "JAN") _ArrayDisplay($aReportSection) $aReportSection = _Report("Costs", "FEB") _ArrayDisplay($aReportSection) $aReportSection = _Report("Profits", "") _ArrayDisplay($aReportSection) Func _Report($_sReport = "", $_sMonth = "") Local $sClient = @ScriptDir & "\Client.ini" Local $aSections = IniReadSectionNames($sClient) If @error Then Exit Local $aReportMonth, $aSection, $aResults[1][2] For $i = $aSections[0] To 1 Step - 1 If $_sReport = "" And $_sMonth = "" Then _ArrayDelete($aSections, _ArraySearch($aSections, "Info")) ExitLoop EndIf $aReportMonth = StringSplit($aSections[$i], ":") ;~ Doesn't include seperator ":", so delete section name from array and continueloop If $aReportMonth[0] <= 1 Then _ArrayDelete($aSections, $i) ContinueLoop EndIf If $_sReport = "" Then If $_sMonth = $aReportMonth[2] Then ContinueLoop _ArrayDelete($aSections, $i) ElseIf $_sReport <> $aReportMonth[1] Then _ArrayDelete($aSections, $i) ElseIf $_sMonth = "" Then If $_sReport = $aReportMonth[1] Then ContinueLoop _ArrayDelete($aSections, $i) ElseIf $_sMonth <> $aReportMonth[2] Then _ArrayDelete($aSections, $i) EndIf Next $aSections[0] = UBound($aSections) - 1 For $i = 1 To $aSections[0] $aSection = IniReadSection($sClient, $aSections[$i]) $aReportMonth = StringSplit($aSections[$i], ":") For $j = 1 To $aSection[0][0] $aSection[$j][0] = _StringProper($aReportMonth[2]) & " - " & $aSection[$j][0] Next _ArrayConcatenate($aResults, $aSection, 1) Next $aResults[0][0] = $_sReport = "" ? "All Reports" : $_sReport & " Report" $aResults[0][1] = $_sMonth = "" ? "" : _Month($_sMonth) Return $aResults EndFunc Func _Month($_sMonth) Switch $_sMonth Case "JAN" Return "January" Case "FEB" Return "February" Case "MAR" Return "March" Case "APR" Return "April" Case "MAY" Return "May" Case "JUN" Return "June" Case "JUL" Return "July" Case "AUG" Return "August" Case "SEP" Return "September" Case "OCT" Return "October" Case "NOV" Return "November" Case "DEC" Return "December" Case Else Return "" EndSwitch EndFunc [Info] Country=USA Type=Distributor [Costs:JAN] cost1=---- cost2=---- [Costs:FEB] cost1=---- cost2=---- [Sales:JAN] sale1=---- sale2=---- [Sales:FEB] sale1=---- sale2=---- [Profits:JAN] prof1=---- prof2=---- [Profits:FEB] prof1=---- prof2=----
kartune Posted March 29, 2018 Author Posted March 29, 2018 Wow thanks a lot! That's some very nice code
jdelaney Posted March 29, 2018 Posted March 29, 2018 (edited) You can also have logic in your script that looks for a section by reading in a key's value. where the value matches the sections name. (just as another way to skin the cat) Edited March 29, 2018 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.
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