Страница 2 из 2

Добавлено: Чт апр 29, 2010 11:53
Andrey_A
Loopback при тестирование я обнаружил пару ньюансов
1. Когда скрипт доходит до строк, то дальше не считает
buttonN=
iconicN=0
это есть пустая кнопка (пробел)
2. Можно ли сделать так: считать началом новой панели при нахождении строки button1, [Buttonbar] - не всегда является началом
3. Вести подсчёт для Buttoncount= тоже по номеру строки buttonN

Немножко сам подкорректировал:

Код: Выделить всё

$text = FileRead(@ScriptDir & "\WinBars.txt") 

$aBarData = StringSplit($text, "[Buttonbar]", 1) 

$nBarCount = 1 
For $i = 1 To $aBarData[0] 
    $sBarName = StringFormat("bar%03d.bar", $nBarCount) 
    $counter = 1 
    While 1 
        $sss = StringRegExp($aBarData[$i], "(?m)^button" & $counter & "=(.+)$", 1) 
        If IsArray($sss) Then 
            IniWrite($sBarName, "Buttonbar", "Buttoncount", $counter) 
            IniWrite($sBarName, "Buttonbar", "button" & $counter, StringStripWS($sss[0], 3)) 

            $cmd = StringRegExp($aBarData[$i], "(?m)^cmd" & $counter & "=(.+)$", 1)
            If IsArray($cmd) Then IniWrite($sBarName, "Buttonbar", "cmd" & $counter, StringStripWS($cmd[0], 3))
 
            $menu = StringRegExp($aBarData[$i], "(?m)^menu" & $counter & "=(.+)$", 1)         
            If IsArray($menu) Then IniWrite($sBarName, "Buttonbar", "menu" & $counter, StringStripWS($menu[0], 3)) 

            $iconic = StringRegExp($aBarData[$i], "(?m)^iconic" & $counter & "=(.+)$", 1) 
            If IsArray($iconic) Then IniWrite($sBarName, "Buttonbar", "iconic" & $counter, StringStripWS($iconic[0], 3)) 

            $param = StringRegExp($aBarData[$i], "(?m)^param" & $counter & "=(.+)$", 1) 
            If IsArray($param) Then IniWrite($sBarName, "Buttonbar", "param" & $counter, StringStripWS($param[0], 3)) 

            $path = StringRegExp($aBarData[$i], "(?m)^path" & $counter & "=(.+)$", 1) 
            If IsArray($path) Then IniWrite($sBarName, "Buttonbar", "path" & $counter, StringStripWS($path[0], 3)) 
        Else 
            ExitLoop 
        EndIf 
        $counter += 1 
    Wend 
    If $counter > 1 Then 
        $nBarCount +=1 
    EndIf 
Next
И изменил табличный файл, теперь выдаётся более корректный файл с коммандами:
http://rghost.ru/download/1495997/3449b ... inBars.zip

Добавлено: Чт апр 29, 2010 20:23
Loopback
Andrey_A писал(а):1. Когда скрипт доходит до строк, то дальше не считает
это есть пустая кнопка (пробел)
Т.е. любой элемент button, у которого пустое значение - это пустая кнопка?
Andrey_A писал(а):2. Можно ли сделать так: считать началом новой панели при нахождении строки button1, [Buttonbar] - не всегда является началом
Странно это как-то (насчет Buttonbar). Можно, конечно, но придется переделать.

Так какая все-таки должна быть логика?
Допустим, встретили Button1, считаем это началом бара. Идем далее, собирая все элементы (неважно, с каким они значением счетчика) до тех пор, пока опять не встретится button1?
Andrey_A писал(а):3. Вести подсчёт для Buttoncount= тоже по номеру строки buttonN
Тут хранится число фактически имеющихся элементов. А значит , сколько их будет в баре - столько должно стоять и тут.

Добавлено: Чт апр 29, 2010 23:58
Andrey_A
Loopback я уже скрипт изменил (сначала задал вопросы, а потом оказалось и сам справился, благодаря тебе) и часть текстового файла тоже.
1. В файле перед каждой строкой button1= теперь [Buttonbar], и в скрипте как и раньше начало новой панели начинается с [Buttonbar]
2. Подсчёт к-ва кнопок в панели производится не по cmd, а по button
любой элемент button, у которого пустое значение - это пустая кнопка?
Пустой копкой считается:
buttonN=
iconicN=0
Спасибо ещё раз, всё работает

Добавлено: Вт май 11, 2010 06:45
Den_Klimov
Andrey_A писал(а):Loopback я уже скрипт изменил (сначала задал вопросы, а потом оказалось и сам справился, благодаря тебе) и часть текстового файла тоже.
1. В файле перед каждой строкой button1= теперь [Buttonbar], и в скрипте как и раньше начало новой панели начинается с [Buttonbar]
2. Подсчёт к-ва кнопок в панели производится не по cmd, а по button
любой элемент button, у которого пустое значение - это пустая кнопка?
Пустой копкой считается:
buttonN=
iconicN=0
Спасибо ещё раз, всё работает
Ну так выложи обновлённый скрипт! :)

Добавлено: Вт май 11, 2010 14:10
Andrey_A
Подкорректированный скрипт выше или отдельно тут
http://forum.wincmd.ru/viewpost.php?p=62777