Jump to content

Recommended Posts

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!

Link to comment
Share on other sites

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:

#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=----

 

Link to comment
Share on other sites

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 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.
Link to comment
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
 Share

×
×
  • Create New...