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

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

Старожил


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

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


Я опять сюда. Итак, после модернизации функция выглядит так
Код: Выделить весь код
Func _Convert2()
Local $sMenuItems
$Config=IniRead ($INICONV, "Setting", "Config", 1) 
$vTest = GUICtrlRead($Edit1)
$s_result=GUICtrlRead($Edit2)
GUICtrlSetData($Edit2,"")
$aData = StringRegExp($vTest, '(?s)BAR#DATA\s+(.+?)(?:TOTALCMD#|$)', 3)
    Switch $Config
Case '1'
$sMenuItems="MENUITEM "
Case '0'
$sMenuItems="M "
EndSwitch
For $i = 0 To UBound($aData)-1
    $aParams = StringSplit(StringStripCR($aData[$i]), @LF)

    If $aParams[0] >= 4 Then
        If StringInStr($aParams[3], 'wcmicons.dll') Then
            $aParams[3] = StringRegExpReplace($aParams[3], '.*?(-?\d+)', '\1')
        EndIf

        $sMenuItems &=$aParams[4] & $Delimeters & $aParams[3] & $Delimeters & $aParams[1] & $Delimeters & $aParams[2]&@CRLF
    EndIf
    GUICtrlSetData($Edit2, $s_result&$sMenuItems)
    _GUICtrlEdit_Scroll($Edit2, $SB_SCROLLCARET )
    GUICtrlSetData($Edit1, "")
    Next
EndFunc
Не устраивает два пункта:
1. Потеря menuitem после первой строки ( есть только в первой, в остальных нет)
2. В конце строк не должно быть #!# ( записанного в переменную $Delimeters)

1 вопрос решен. остался второй - удаление $Delimeters на конце строки.
Код: Выделить весь код
Func _Convert2()
$sMenuItems=''
$Config=IniRead ($INICONV, "Setting", "Config", 1) 
$vTest = GUICtrlRead($Edit1)
$s_result=GUICtrlRead($Edit2)
GUICtrlSetData($Edit2,"")
$aData = StringRegExp($vTest, '(?s)BAR#DATA\s+(.+?)(?:TOTALCMD#|$)', 3)
For $i = 0 To UBound($aData)-1
   $aParams = StringSplit(StringStripCR($aData[$i]), @LF)

   If $aParams[0] >= 4 Then
        If StringInStr($aParams[3], 'wcmicons.dll') Then
            $aParams[3] = StringRegExpReplace($aParams[3], '.*?(-?\d+)', '\1')
        EndIf
    Switch $Config
Case '1'
        $sMenuItems &="MENUITEM "&$aParams[4] & $Delimeters & $aParams[3] & $Delimeters & $aParams[1] & $Delimeters & $aParams[2]&@CRLF
Case '0'
        $sMenuItems &="M "&$aParams[4] & $Delimeters & $aParams[3] & $Delimeters & $aParams[1] & $Delimeters & $aParams[2]&@CRLF
EndSwitch
    EndIf
    GUICtrlSetData($Edit2, $s_result&$sMenuItems)
    _GUICtrlEdit_Scroll($Edit2, $SB_SCROLLCARET )
    GUICtrlSetData($Edit1, "")
   Next
EndFunc

Отправлено: 15:36, 11-09-2013 | #11