Показать полную графическую версию : [решено] Работа с файлами панелей инструментов тотал коммндера
eus_deus
29-09-2013, 18:52
Creat0R, после замены все ок!
eus_deus
04-10-2013, 20:03
Выручайте, обнаружился мой косяк. Нужно еще одно условие к данной функции. Итак , вкратце. Отрезок функции такой
Func _ConvertBarFile()
If GUICtrlRead($Edit1)='' Then
MsgBox(262144+48, "Ошибка", "В текстовом поле нет кода для конвертирования")
Return
EndIf
$Config = Int(IniRead($INICONV, 'Setting', 'Config', 1))
Local $sMenuHeader="M"
If $Config=1 Then
$sMenuHeader="MENUITEM"
EndIf
Local $sInStrCond="Wcmicons.dll"
Local $sRead = GUICtrlRead($Edit1)
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
Идет проверка на условие наличия wcmicons.dll в строке и обрезается все, кроме номера иконки.
Если в строке нет wcmicons.dll , то строка должна браться полностью. Но есть проблема - в этом случае в конец строки надо добавить ",0" ( запятую с нулем, без кавычек)
Пробовал так, получается чепуха - он к номеру дописывает еще запятую с нулем
For $j = 0 To 3
If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
$aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
Else
$aItem[$j] = $aItem[$j]&",0"
EndIf
В общем надо
-если строка с путем к файлу иконки содержит wcmicons.dll, то брать только номер иконки
-если эта же строка с путем не содержит wcmicons.dll, то брать путь полностью, дописывая ",0" в конце этой строки
Пробовал так, получается чепуха - он к номеру дописывает еще запятую с нулем »
Так разве не это и нужно?
брать путь полностью, дописывая ",0" в конце этой строки »
:)
Или имеется в виду что нужно обрезать у строки существующий номер, и вместо него подставлять 0?
eus_deus
05-10-2013, 21:52
Так разве не это и нужно? »
нужно - если wcmicons.dll, то обрезать до номера - это есть
а если другой exe,icl,dll - то писать полное имя с добавлением ",0"
нужно - если wcmicons.dll, то обрезать до номера - это есть
а если другой exe,icl,dll - то писать полное имя с добавлением ",0" »
Ну так оно так и работает с последним изменением выше.
Цитирую ещё раз:
Пробовал так, получается чепуха - он к номеру дописывает еще запятую с нулем »
Ведь это же и требуется.
eus_deus
05-10-2013, 22:49
он к номеру дописывает еще запятую с нулем »
к номеру wcmicons ноль дописывать не надо
Ну так оно так и работает с последним изменением выше »
да, оно пишет имя полностью, но без нуля
оно пишет имя полностью, но без нуля »
Только что перепроверил, всё происходит так как нужно, там где есть wcmicons.dll извлекается только номер, а где нет - добавляется запятая с нулём.
eus_deus
06-10-2013, 20:32
Только что перепроверил, всё происходит так как нужно, там где есть wcmicons.dll извлекается только номер, а где нет - добавляется запятая с нулём. »
Вы имели в виду это код?
For $j = 0 To 3
If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
$aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
Else
$aItem[$j] = $aItem[$j]&",0"
EndIf »
Его работа ниже. Это не то, что нужно
MENUITEM Просмотр эскизов - открывается файл под курсором,0#!#1317#!#%COMMANDER_PATH%\BAR\044_Viiewers.bar,0#!#,0
MENUITEM ,0#!#,0#!#,0#!#,0
MENUITEM Панель специальных инструментов TC Image,0#!#1243#!#%COMMANDER_PATH%\Bar\028_Additional_Tools.bar,0#!#,0
MENUITEM Инструменты для работы с фото,0#!#1395#!#%COMMANDER_PATH%\Bar\258_Photoinstrument.bar,0#!#,0
MENUITEM Мои инструменты,0#!#2#!#%COMMANDER_PATH%\MENUIMG.exe,0#!#%Z%%COMMANDER_PATH%%\BAR\260_my_bar.bar||#podar ok||$Мои~~инструменты||&v_podarok!!Частые~~программы,0
MENUITEM Программирование,0#!#53#!#%COMMANDER_PATH%\MENUIMG.exe,0#!#%Z%%COMMANDER_PATH%%\BAR\261_programming. bar||#RED||$Программирование,0
MENUITEM Запуск моих программ,0#!#%COMMANDER_PATH%\TCIMG.exe,0#!#%COMMANDER_PATH%\TCIMG.exe,0#!#tcimg=$tmtm_StartMyProgra ms,0
MENUITEM Закачать по ссылке с буфера,0#!#891#!#%COMMANDER_PATH%\TCIMG.exe,0#!#downl="C:\Users\asmadeus\Downloads\Total\"!!1||cliplist,0
MENUITEM ,0#!#,0#!#-2,0#!#,0
MENUITEM Панель редактирования треков,0#!#2232#!#%COMMANDER_PATH%\BAR\229_Edit_Tracks.bar,0#!#,0
MENUITEM ,0#!#,0#!#,0#!#,0
MENUITEM Информация о медиофайлах и Настройка кодеков,0#!#41#!#%COMMANDER_PATH%\BAR\130_Audio_1.bar,0#!#,0
MENUITEM Редактирование тегов и Аудио утилиты,0#!#42#!#%COMMANDER_PATH%\BAR\131_Audio_2.bar,0#!#,0
MENUITEM Аудио Редакторы,0#!#605#!#%COMMANDER_PATH%\BAR\132_Audio_3.bar,0#!#,0
MENUITEM Регулировка системного звука,0#!#1611#!#%COMMANDER_PATH%\BAR\133_Audio_4.bar,0#!#,0
MENUITEM Программы для просмотра телевидения и прослушивания радио,0#!#406#!#%COMMANDER_PATH%\BAR\009_TV.bar,0#!#,0
MENUITEM ,0#!#,0#!#,0#!#,0
eus_deus
06-10-2013, 21:00
надеюсь, вопрос снят окончательно. методом проб и ошибок заработало так ( участок, который правился):
For $j = 0 To 3
If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
$aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
ElseIf $j = 1 and NOT StringInStr($aItem[$j], $sInStrCond)then
$aItem[$j] =$aItem[$j]&',0'
EndIf
надеюсь, вопрос снят окончательно. методом проб и ошибок заработало так »
Отлично, учимся медитировать над кодом :).
Только во втором условии And Not... не нужно, достаточно просто проверять что $j = 1.
А ещё лучше, сделать так:
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $j = 0 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) 3
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $j = 1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) StringInStr (http://autoit-script.ru/autoit3_docs/functions/StringInStr.htm)($aItem[$j], $sInStrCond) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$aItem[$j] = StringRegExpReplace (http://autoit-script.ru/autoit3_docs/functions/StringRegExpReplace.htm)($aItem[$j], '.*?(-?\d+)', '\1')
Else (http://www.autoitscript.com/autoit3/docs/keywords.htm#Else)
$aItem[$j] &= ',0'
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
...
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
eus_deus
07-10-2013, 22:36
Creat0R, вы правильно сказали - учимся :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.