Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Вот это я понимаю оформление темы!

Для этого примера нужна библиотека IniString:

Код: Выделить весь код
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIEdit.au3>

#include "IniString.au3"

$hGUI = GUICreate('Form', 813, 453, 435, 124)
$iBarIn_Edit = GUICtrlCreateEdit('', 8, 8, 409, 401)
$iBarOut_Edit = GUICtrlCreateEdit('', 424, 8, 385, 401)
$iReadFile_Bttn = GUICtrlCreateButton('Read file', 8, 424, 113, 25)
$iConvert_Bttn = GUICtrlCreateButton('Convert', 320, 424, 193, 25)

GUISetState(@SW_SHOW)

While 1
    $iMsg = GUIGetMsg()

    Switch $iMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iReadFile_Bttn
            _OpenBarFile()
        Case $iConvert_Bttn
            $sItems = _ConvertBarFile('MENUITEM', '#!#', 'wcmicons.dll')
            GUICtrlSetData($iBarOut_Edit, $sItems)
    EndSwitch
WEnd

Func _OpenBarFile()
    Local $sFile = FileOpenDialog("Открыть bar файл", @ScriptDir, "Файлы панелей Total Commander (*.bar)")

    If Not @error Then
        GUICtrlSetData($iBarIn_Edit, FileRead($sFile))
    EndIf
EndFunc

Func _ConvertBarFile($sMenuHeader = 'MENUITEM', $sDelim = '#!#', $sInStrCond = 'wcmicons.dll')
    Local $sRead = GUICtrlRead($iBarIn_Edit)
    Local $iCount = Int(_IniString_Read($sRead, 'Buttonbar', 'buttoncount', 0))

    Local $sItems = ''

    For $i = 1 To $iCount
        Dim $aItem[4] = _
            [ _
                _IniString_Read($sRead, 'Buttonbar', 'menu' & $i, ''), _ ;Menu
                _IniString_Read($sRead, 'Buttonbar', 'button' & $i, ''), _ ;Button
                _IniString_Read($sRead, 'Buttonbar', 'cmd' & $i, ''), _ ;Cmd
                _IniString_Read($sRead, 'Buttonbar', 'param' & $i, '') _ ;Param
            ]

        $sLine = $sMenuHeader & ' '

        For $j = 0 To 3
            If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
                $aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
            EndIf

            If $aItem[$j] <> '' Then
                If $j > 0 And $aItem[$j-1] <> '' Then
                    $sLine &= $sDelim & $aItem[$j]
                Else
                    $sLine &= $aItem[$j]
                EndIf
            EndIf
        Next

        $sItems &= $sLine & @CRLF
    Next

    Return $sItems
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:39, 14-09-2013 | #2