Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Подсчет записей в ИНИ файле. (http://forum.oszone.net/showthread.php?t=183393)

Centrinar 19-08-2010 22:06 1477608

Подсчет записей в ИНИ файле.
 
Есть ини файл типа:
[Params]
prog1=3333
prog2=33444

Как сделать так, что бы скрипт считал общее кол-во prog т.е. например в данном примере их 2.

FlatX007 19-08-2010 22:50 1477631

Код:

$aIniSec = IniReadSection("test.ini", "Params")
MsgBox(0, Default, UBound($aIniSec) - 1)

Код:

$aIniSec = IniReadSection("test.ini", "Params")
If Not (@error) Then MsgBox(0, Default, $aIniSec[0][0])


Centrinar 19-08-2010 23:03 1477640

Забыл, помимо prog там есть и другие строки, но нужно подсчитать именно prog

madmasles 19-08-2010 23:43 1477652

Centrinar,
Так попробуйте:
Код:

$j = 0
$aSection = IniReadSection(@ScriptDir & '\My.ini', 'Params')
For $i = 1 To $aSection[0][0]
    ;If StringInStr($aSection[$i][0], 'prog', 0) Then ;или так
    If StringLeft($aSection[$i][0], 4) = 'prog' Then
        $j += 1
    EndIf
Next
MsgBox(0, 'Test', 'Ключей с именем "prog... ": ' & $j & ' штук.')


FlatX007 19-08-2010 23:56 1477657

Код:

#include <Array.au3>

Global $sProg = 'prog'
Dim $aProgSec[1]

$aIniSec = IniReadSection("test.ini", "Params")
If Not (@error) Then
    For
$i = 1 To $aIniSec[0][0]
        If StringLeft($sProg, StringLen($sProg)) = StringLeft($aIniSec[$i][0], StringLen($sProg)) Then
            _ArrayAdd($aProgSec, $aIniSec[$i][0] & '|' & $aIniSec[$i][1])
        EndIf
    Next

    $aProgSec[0] = UBound($aProgSec) - 1
EndIf

_ArrayDisplay($aProgSec) ;~ ;$aProgSec[0] = "Количество найденых ключей PROGxxx"


madmasles 20-08-2010 01:24 1477683

FlatX007,
Не проще ли вместо StringLeft($sProg, StringLen($sProg)) просто указать $sProg? :)

FlatX007 20-08-2010 02:10 1477695

меняем prog на program_ какой нибудь и теряется универсальность я вроде как для функции сделал, просто передать значения а там она сама разберётся.

madmasles 20-08-2010 10:24 1477816

FlatX007,
Код:

Global $sProg = 'что угодно'

If StringLeft($sProg, StringLen($sProg)) <> $sProg Then
    MsgBox(0, 'madmasles', 'FlatX007, Вы были правы.')
Else
    MsgBox(0, 'madmasles', 'FlatX007, Вы были не правы.')
EndIf

:)

amel27 21-08-2010 14:14 1478584

Код:

StringRegExpReplace(FileRead(@ScriptDir &'\My.ini'), "(?im)^\s*prog\d+\b", "")
ConsoleWrite("Количество найденых ключей PROGxxx: "& @extended &@CRLF)



Время: 17:00.

Время: 17:00.
© OSzone.net 2001-