Я опять сюда. Итак, после модернизации функция выглядит так
Код:

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