[решено] Как загнать в массив содержание текстового поля

Аватара пользователя
eus_deus

[решено] Как загнать в массив содержание текстового поля

Сообщение eus_deus »

Привет! Снова я! Говорю сразу - по этому вопросу у меня нет ни строчки кода, это может быть и не массив. Постараюсь задачу обрисовать поподробнее. Итак, имеем текстовое поле с секциями и параметрами, наподобие файла ini.

Нужно - массовое изменение начала строк, вне зависимости от их количества.

Пример поля



Код:

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

[Section]
Разделитель=!!!
S
А my_icons.dll!!!Image1
А my_icons.dll!!!Image2
А my_icons.dll!!!Image3
E

1.Разделитель во второй строке меняется отдельно, но как его сразу сменить во всем содержимом поля?

2.Буквы A ,E, S должны тоже меняться во всем поле на Action, end, и Sepup cсоответствнно.

Мне в двух словах сказали, что надо все поле загонять в массив, и по циклу делать замену. Может, сказали неправильно
Аватара пользователя
eus_deus

Re: [решено] Как загнать в массив содержание текстового поля

Сообщение eus_deus »

Вот код. При смене разделителя он должен менятся во всем тексте ($Edit2), в текстовом поле ($Input1) и должно перезаписываться значение параметра в ini файле ($Delimeters) - подозреваю, что запись в ini идет неправильно, но не знаю, где именно



Код:

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

Func _delim()
$new_name=InputBox("Переименовать разделитель","Введите разделитель команды",""," M3",200,130)
If @error Then Return
IniWrite ($INICONV, "Setting", "Delimeters", $new_name)
GUICtrlSetData($Input1,$new_name)
$sData = GUICtrlRead($Edit2)
$sData =  StringReplace($sData, $Delimeters,$new_name )
ConsoleWrite($sData & @LF)
GUICtrlSetData($Edit2,$sData)
EndFunc

Все, отбой. Учусь же все таки. Итак, работает в моем случае такая функция



Код:

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

Func _delim()
$new_name=InputBox("Переименовать разделитель","Введите разделитель команды",""," M3",200,130)
If @error Then Return
IniWrite ($INICONV, "Setting", "Delimeters", $new_name)
GUICtrlSetData($Input1,$new_name)
$sData = GUICtrlRead($Edit2)
$sData =  StringReplace($sData, $Delimeters,$new_name )
ConsoleWrite($sData & @LF)
$Delimeters=IniRead($INICONV,"Setting","Delimeters",1)
GUICtrlSetData($Edit2,"")
GUICtrlSetData($Edit2,$sData)
EndFunc

Вопрос считаю решенным!
Аватара пользователя
Creat0R

Re: [решено] Как загнать в массив содержание текстового поля

Сообщение Creat0R »

Как то так:



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

#include <GUIConstantsEx.au3>
$hGUI = GUICreate('Test Script', 300, 200)
$iReplace_Bttn = GUICtrlCreateButton('Replace', 20, 10, 70, 20)
$iEdit = GUICtrlCreateEdit(ClipGet(), 20, 40, 260, 140)
GUISetState(@SW_SHOW, $hGUI)
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iReplace_Bttn
            $sData = GUICtrlRead($iEdit)
            $sData = StringRegExpReplace($sData, '(?m)^A\b', 'Action')
            $sData = StringRegExpReplace($sData, '(?m)^E\b', 'End')
            $sData = StringRegExpReplace($sData, '(?m)^S\b', 'Setup')
            $sData = StringRegExpReplace($sData, '(?<!=)!!!', '=') ;Не понятно на что, и где менять
            GUICtrlSetData($iEdit, $sData)
    EndSwitch
WEnd
Аватара пользователя
eus_deus

Re: [решено] Как загнать в массив содержание текстового поля

Сообщение eus_deus »

Creat0R, код помог почти во всем, кроме одного вопроса. Описываю насколько могу точно.


Цитата Creat0R:



$sData = StringRegExpReplace($sData, '(?
Аватара пользователя
eus_deus

Re: [решено] Как загнать в массив содержание текстового поля

Сообщение eus_deus »

Цитата eus_deus:



Проблема в том, что там могут быть любые три символа, и в stringexpraplace надо передать именно переменную
[решено] Как загнать в массив содержание текстового поля




Не вижу проблему:





Код:

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

$vTest = 'А my_icons.dll!!!Image1' & @CRLF & 'А my_icons.dll!!!Image2'
$sDelimiters = '!!!'
$sReplace = InputBox("Переименовать разделитель", "Введите разделитель команды", "", " M3", 200, 130)
$sRet = StringReplace($vTest, $sDelimiters, $sReplace)
ConsoleWrite($sRet & @LF)
Аватара пользователя
Creat0R

Re: [решено] Как загнать в массив содержание текстового поля

Сообщение Creat0R »

Creat0R, при первом нажатии кнопки работает, как и мой код выше. Но при последующих нажатиях результата нет. Подозреваю, что mtrcn надо как то обновлять
Ответить

Вернуться в «AutoIt»