Difference between revisions of "$readini"

From Scriptwiki
Jump to: navigation, search
m (made old code a bit more readable and added $readini2 snippet)
m
 
(One intermediate revision by the same user not shown)
Line 62: Line 62:
 
  }
 
  }
 
== See Also ==
 
== See Also ==
[[$ini]] returns the name/Nth position of the specified topic/item in an ini file.
+
* [[$ini]] returns the name/Nth position of the specified topic/item in an ini file.
 
+
* [[Writeini|/writeini]] to write to an ini file.
With [[Writeini|/writeini]] you can write to an ini file.
 
  
 
[[Category:File and Directory Identifiers]]
 
[[Category:File and Directory Identifiers]]
 
[[Category:Ini]]
 
[[Category:Ini]]

Latest revision as of 09:26, 2 July 2007

Returns a single line of text from an ini file

$readini(filename, [np], section, item)

If the n switch is specified then the line read in will not be evaluated and will be treated as plain text.

If the p switch is specified, command | separators are treated as such instead of as plain text.

Example

echo -a My command prefix is: $readini(mirc.ini,text,commandchar)

This example echo's your command prefix to your active window (usually /).

The following example will loop through all item in mirc.ini in the section called mirc.

var %i = 1

; begin a while-loop through all items in section mirc. $ini(mirc.ini,mirc,0) returns 
; total number of items in this section.
while (%i <= $ini(mirc.ini,mirc,0)) {

 ; echo item's name and value
 echo -a $ini(mirc.ini,mirc,%i) => $readini(mirc.ini,mirc,$ini(mirc.ini,mirc,%i))

 ; increase looping-variable by one
 inc %i
}

Here is also a little snippet to find a name of an item by a value
Usage: $readini2(file.ini,topic,value[,N])
N is optional, 0 returns the total number of matched values, 1 returns the first matched values item name.

alias readini2 {

  ;check if the alias was called as an identifier
  if ($isid) {
    var %x = 1,%y

    ;loop through topics in an ini file
    while (%x <= $ini($1,$2,0)) {

      ;check if we have a matching value
      if ($readini($1,$2,$ini($1,$2,%x)) == $3) { 

        ;see if $4 is null (no N given), then return the first match
        if ($4 == $null) { return $ini($1,$2,%x) | halt }

        ;see if $4 is 0 (to find out how many matchinf values there are), then increment a value of %y
        elseif ($4 == 0) { inc %y }

        ;see if $4 is a number (find Nth match)
        elseif ($4 isnum) { 

          ;increment %y, and if the value is same as $4 (Nth value to find) return the Nth match
          inc %y 
          if (%y == $4) { return $ini($1,$2,%x) | halt }
        }
      } 
      inc %x
    }

    ;return %y (only if N = 0, other if's halt the script)
    return %y
  }
}

See Also

  • $ini returns the name/Nth position of the specified topic/item in an ini file.
  • /writeini to write to an ini file.