1 (изменено: sergeiplugatyr, 2013-11-27 19:04:16)

Тема: AHK: ListView и параметры INI

Всем привет, вообщем суть такая, вот код:

Gui, Add, ListView, x3 y6 w475 h164 , Должность|Фамилия|Имя
Gui, Add, Button, x183 y171 w100 h30 gCreate, Добавить
Gui, Show, Center w484 h204, New GUI Window
IniRead, read, File.ini, 1, a
IniRead, read1, File.ini, 1, b
IniRead, read2, File.ini, 1, c
LV_Add("", read, read1, read2)
Return
Create:
Gui, 2:Destroy
Gui, 2:Add, Edit, x5 y3 w109 h18 vEdit, Бабуся
Gui, 2:Add, Edit, x148 y1 w122 h19 vEdit1, Тетя
Gui, 2:Add, Edit, x83 y42 w101 h21 vEdit2, Нина
Gui, 2:Add, Button, x88 y127 w100 h30 gSave, Ок
Gui, 2:Show, Center w271 h159, New GUI Window
Return
Save:
GuiControlGet, get, , Edit
GuiControlGet, get1, , Edit1
GuiControlGet, get2, , Edit2
IniWrite, %get%, File.ini, 1, a
IniWrite, %get1%, File.ini, 1, b
IniWrite, %get2%, File.ini, 1, c
IniWrite, %get%, File.ini, 2, a
IniWrite, %get1%, File.ini, 2, b
IniWrite, %get2%, File.ini, 2, c
; И так далее...
GuiClose:
ExitApp

Читается ini вроде все нормально, но мне нужно сделать так чтобы читалась вторая секция и вставлялась в ListView, потом третья секция и так далее...
Добавлять постоянно

IniRead, read, File.ini, 2, a
IniRead, read1, File.ini, 2, b
IniRead, read2, File.ini, 2, c
LV_Add("", read, read1, read2)

Мне никак нельзя, так как секций много.Надеюсь вы поняли мой вопрос и мне поможете.

Как сказал мой дед - Я твой дед

2

Re: AHK: ListView и параметры INI

Ну что мне никто не поможет?

Как сказал мой дед - Я твой дед

3

Re: AHK: ListView и параметры INI

А известно ли заранее, сколько секций в ini-файле?

4 (изменено: sergeiplugatyr, 2013-11-28 18:18:16)

Re: AHK: ListView и параметры INI

К сожалению нет, но  впринципе можно где то 50

Как сказал мой дед - Я твой дед

5 (изменено: serzh82saratov, 2013-11-28 22:00:00)

Re: AHK: ListView и параметры INI

Если секции идут по порядку (числами) то в цикле подставлять A_Index, если секция пуста\несуществует, то выход из цикла.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: ListView и параметры INI

Я как-то делал уже такое. Сначала файл прогоняется через RegEx, определяется число строк, отвечающих шаблону "заголовок секции". Затем уже считываем значения с каждого ключа.
Кажется, у меня там заголовки колонок  ListView формировались динамически, в зависимости от обнаруженных ключей. Если найду, выложу код.

7 (изменено: serzh82saratov, 2013-11-28 23:49:09)

Re: AHK: ListView и параметры INI

Тоже где-то подобное делал, написал заново:


Ini = C:\Users\sergey\Desktop\new.ini
FileRead, TXT, *t %Ini% 
 
Pos := 1, Sections := ""

While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
      
MsgBox % "Есть секции:`n`n" Sections := RTrim(Sections, "`n") 

Loop, parse, Sections, `n
{
    IniRead, Data, %Ini%, %A_LoopField%  
    
    Pos := 1, Keys := ""
    
    While Pos 
        Pos := RegExMatch( Data, "m`a)^(.*?)\s*=\s*(.*)$", Match, Pos)
        , Pos := Pos ? Pos += StrLen(Match) : 0
        , Keys .= Pos ? Match1 " = " Match2 "`n" : "" ; Тут Match2 - это значение ключа
    
    MsgBox В секции "%A_LoopField%"`n`nЕсть ключи:`n`n%Keys%  
}
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: ListView и параметры INI

serzh82saratov пишет:

Тоже где-то подобное делал, написал заново:


Ini = C:\Users\sergey\Desktop\new.ini
FileRead, TXT, *t %Ini% 
 
Pos := 1, Sections := ""

While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
      
MsgBox % "Есть секции:`n`n" Sections := RTrim(Sections, "`n") 

Loop, parse, Sections, `n
{
    IniRead, Data, %Ini%, %A_LoopField%  
    
    Pos := 1, Keys := ""
    
    While Pos 
        Pos := RegExMatch( Data, "m`a)^(.*?)\s*=\s*(.*)$", Match, Pos)
        , Pos := Pos ? Pos += StrLen(Match) : 0
        , Keys .= Pos ? Match1 " = " Match2 "`n" : "" ; Тут Match2 - это значение ключа
    
    MsgBox В секции "%A_LoopField%"`n`nЕсть ключи:`n`n%Keys%  
}
return

Код великолепен, но когда я его вставляю в свой скрипт, то в ListView он показывает 1 строку(а у меня в INI две секции), а по идее он должен был показать две строки.Не могли бы вы показать на моем примере как это работает в ListView.

Как сказал мой дед - Я твой дед

9 (изменено: serzh82saratov, 2013-11-29 11:37:43)

Re: AHK: ListView и параметры INI

Так?


Gui, Add, ListView, x3 y6 w475 h164 , Должность|Фамилия|Имя 
Gui, Show
    
Ini = C:\Users\sergey\Desktop\new.ini
FileRead, TXT, *t %Ini% 
 
Pos := 1, Sections := ""

While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
      
Sections := RTrim(Sections, "`n") 

Loop, parse, Sections, `n
{
    IniRead, Data, %Ini%, %A_LoopField%  
    
    Pos := 1, Keys := Field1 := Field2 := Field3 := ""
    
    While Pos 
        Pos := RegExMatch( Data, "m`a)^(.*?)\s*=\s*(.*)$", Match, Pos)
        , Pos := Pos ? Pos += StrLen(Match) : 0 
        , Field%A_Index% := Match2  
        
    LV_Add("", Field1, Field2, Field3) 
}
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: ListView и параметры INI

serzh82saratov пишет:

Так?


Gui, Add, ListView, x3 y6 w475 h164 , Должность|Фамилия|Имя 
Gui, Show
    
Ini = C:\Users\sergey\Desktop\new.ini
FileRead, TXT, *t %Ini% 
 
Pos := 1, Sections := ""

While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
      
Sections := RTrim(Sections, "`n") 

Loop, parse, Sections, `n
{
    IniRead, Data, %Ini%, %A_LoopField%  
    
    Pos := 1, Keys := Field1 := Field2 := Field3 := ""
    
    While Pos 
        Pos := RegExMatch( Data, "m`a)^(.*?)\s*=\s*(.*)$", Match, Pos)
        , Pos := Pos ? Pos += StrLen(Match) : 0 
        , Field%A_Index% := Match2  
        
    LV_Add("", Field1, Field2, Field3) 
}
return

Да, спасибо.

Как сказал мой дед - Я твой дед

11

Re: AHK: ListView и параметры INI

Если имена ключей заранее известны, то лучше так:


Gui, Add, ListView, x3 y6 w475 h164 , Должность|Фамилия|Имя 
Gui, Show
    
Ini = C:\Users\sergey\Desktop\new.ini
FileRead, TXT, *t %Ini% 
 
Pos := 1, Sections := ""

While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
      
Sections := RTrim(Sections, "`n") 

Loop, parse, Sections, `n
{
    IniRead, Field1, %Ini%, %A_LoopField%, a, %A_Space%
    IniRead, Field2, %Ini%, %A_LoopField%, b, %A_Space%
    IniRead, Field3, %Ini%, %A_LoopField%, c, %A_Space%
        
    LV_Add("", Field1, Field2, Field3) 
}
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: ListView и параметры INI

А еще вопрос, можно как нибудь вытащить сам номер последней секции из INI файла(у меня секции пронумерованы)?

Как сказал мой дед - Я твой дед

13

Re: AHK: ListView и параметры INI

Странный вопрос, ведь в 7 посте, 1 MsgBox выводит список секций.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14 (изменено: serzh82saratov, 2013-11-29 13:03:59)

Re: AHK: ListView и параметры INI

И вообще, если все секции пронумерованы по порядку, зачем тут все эти заморочки с RegEx?
Я же вас в 5 посте об этом спрашивал.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15 (изменено: sergeiplugatyr, 2013-11-29 13:17:16)

Re: AHK: ListView и параметры INI

serzh82saratov пишет:

И вообще, если все секции пронумерованы по порядку, зачем тут все эти заморочки с RegEx?
Я же вас в 5 посте об этом спрашивал.

Это я для удобства их пронумеровал, а так они другие.А мне просто нужно чтобы показалась последняя секция в INI файле.

Как сказал мой дед - Я твой дед

16

Re: AHK: ListView и параметры INI

Это я для удобства их пронумеровал, а так они другие.А мне просто нужно чтобы показалась последняя секция в INI файле.

Ничего непонимаю.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: ListView и параметры INI

serzh82saratov пишет:

Это я для удобства их пронумеровал, а так они другие.А мне просто нужно чтобы показалась последняя секция в INI файле.

Ничего непонимаю.

Ладно, можете привести пример кода который будет выдавать номер последней секции(они пронумерованы).

Как сказал мой дед - Я твой дед

18

Re: AHK: ListView и параметры INI

привести пример кода который будет выдавать номер последней секции

Это уже не интересно. Есть список секций, что мешает добавить их подсчёт в цикл?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

19

Re: AHK: ListView и параметры INI

serzh82saratov пишет:

привести пример кода который будет выдавать номер последней секции

Это уже не интересно. Есть список секций, что мешает добавить их подсчёт в цикл?

Хотите чтобы было интересно?Пожалуйста: можете привести пример кода который будет выдавать номер последней секции(они не пронумерованы).

Как сказал мой дед - Я твой дед

20

Re: AHK: ListView и параметры INI

Не важно - пронумерованы они или нет, ответ в 18 посте. Переменную A_Index знаете?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

21

Re: AHK: ListView и параметры INI

serzh82saratov пишет:

Не важно - пронумерованы они или нет, ответ в 18 посте. Переменную A_Index знаете?

Знаю, вроде.

Как сказал мой дед - Я твой дед

22

Re: AHK: ListView и параметры INI

Надо её использовать для подсчёта всех найденных секций в цикле:


While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23

Re: AHK: ListView и параметры INI

Всеравно не могу понять как так сделать...

Как сказал мой дед - Я твой дед

24

Re: AHK: ListView и параметры INI


While Pos 
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos)
    , Pos := Pos ? Pos += StrLen(Match) : 0
    , Sections .= Pos ? Match1 "`n" : "" 
    , AllSections := A_Index - 1
    
MsgBox % AllSections 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

25

Re: AHK: ListView и параметры INI

Вот у меня в файле INI вес секции в разноброс(они пронумерованы), как сделать чтобы выдавалась самая большая секция?

Как сказал мой дед - Я твой дед

26

Re: AHK: ListView и параметры INI

И чем вас общее количество секций не устраивает?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

27

Re: AHK: ListView и параметры INI

Не понял вопроса.

Как сказал мой дед - Я твой дед

28

Re: AHK: ListView и параметры INI

В 24 посте код выводящий количество всех секций, чем неустраивает?

sergeiplugatyr пишет:
serzh82saratov пишет:

привести пример кода который будет выдавать номер последней секции

Это уже не интересно. Есть список секций, что мешает добавить их подсчёт в цикл?

Хотите чтобы было интересно? Пожалуйста: можете привести пример кода который будет выдавать номер последней секции(они не пронумерованы).

Ответ вам дан (Ван Дамм - блин ), если это совсем не то, то видимо логично сформулировать свой вопрос иначе, нежели отвечать односложным вопросом, на односложный вопрос..

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

29

Re: AHK: ListView и параметры INI

В 24 посте код выводящий количество всех секций, чем неустраивает?

Тот код выдает самое большое число(секцию), так как они идут по порядку, а если секции идут в разноброс, то этот код уже без силен.

Как сказал мой дед - Я твой дед

30

Re: AHK: ListView и параметры INI

Значит нужен пример ини файла.
То есть может быть например всего 2 секции


[секция1]

[секция100]

И тут нужно число 100?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

31

Re: AHK: ListView и параметры INI

100 вполне разумно.

Как сказал мой дед - Я твой дед

32 (изменено: serzh82saratov, 2013-12-03 00:04:14)

Re: AHK: ListView и параметры INI


While Pos  
    Pos := RegExMatch( TXT, "m`a)^\s*\[(.*?)]\s*$", Match, Pos) 
    , Pos ? (Sections .= Match1 "`n", Pos += StrLen(Match)
    , RegExMatch(Match1, "\d+", Num)
    , NumSection := Num > NumSection ? Num : NumSection) : ""
    
MsgBox % NumSection
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

33

Re: AHK: ListView и параметры INI

Рабочий вариант, спасибо.

Как сказал мой дед - Я твой дед