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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как загнать в массив содержание текстового поля

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

Старожил


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


Конфигурация

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


Привет! Снова я! Говорю сразу - по этому вопросу у меня нет ни строчки кода, это может быть и не массив. Постараюсь задачу обрисовать поподробнее. Итак, имеем текстовое поле с секциями и параметрами, наподобие файла 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соответствнно.
Мне в двух словах сказали, что надо все поле загонять в массив, и по циклу делать замену. Может, сказали неправильно

Отправлено: 12:01, 04-09-2013

 

Аватара для Creat0R

Must AutoIt


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

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


Как то так:

Код: Выделить весь код
#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

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

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

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

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

Отправлено: 17:47, 04-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


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

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


Creat0R, спасибо, попробую вечером у себя

Отправлено: 08:32, 05-09-2013 | #3


Старожил


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

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


А кто подскажет доступный и понятный для чайников мануал по регулярным выражениям? Читал в справке - наверное, я тупой и не понял... Как их правильно строить? С чего начинать? Прошу прощения за оффтоп...

Отправлено: 14:25, 05-09-2013 | #4


Аватара для madmasles

Ветеран


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

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


eus_deus,
Почитайте эту тему Уроки по работе с Регулярными Выражениями (RegExp)
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:11, 05-09-2013 | #5


Старожил


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

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


madmasles, хорошо, спасибо, посмотрю

Отправлено: 17:56, 05-09-2013 | #6


Старожил


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

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


Creat0R, код помог почти во всем, кроме одного вопроса. Описываю насколько могу точно.
Цитата Creat0R:
$sData = StringRegExpReplace($sData, '(?<!!!!', '=') ;Не понятно на что, и где менять »
Касательно этой строки - !!!, которые требуется менять, содержаться в настройках в ини файле. Считывается функцией
Код: Выделить весь код
$Delimeters=IniRead($INICONV, "Setting", "Delimeters", 1)
Проблема в том, что там могут быть любые три символа, и в stringexpraplace надо передать именно переменную

Отправлено: 18:13, 05-09-2013 | #7


Старожил


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

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


Радовался, думал помогло. Итак, по воспросу, который я писал сообщением выше.Есть функция
Код: Выделить весь код
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 = StringRegExpReplace($sData, $Delimeters,$new_name )
GUICtrlSetData($Edit2,$sData)
EndFunc
В итоге переменная $Delimeters меняется во всем тексте, но только один раз. В чем может быть проблема?

Отправлено: 19:31, 05-09-2013 | #8


Аватара для Creat0R

Must AutoIt


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

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


Цитата 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)

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

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

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

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

Отправлено: 00:25, 06-09-2013 | #9


Старожил


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

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


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

Отправлено: 12:37, 06-09-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как загнать в массив содержание текстового поля

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Разбор строк из текстового поля eus_deus AutoIt 24 28-08-2013 22:42
как загнать имена всех "Подключение по локальной сети" в переменные ? mitiya Сетевые технологии 10 30-06-2010 22:12
как загнать в переменную ip арес компа ? mitiya Сетевые технологии 19 08-06-2006 02:27
JavaScript: вывод текста из текстового поля Jekamajor Вебмастеру 5 10-08-2005 12:43
Как увидеть из ASP7.3 содержание FAT32? Asfr Общий по Linux 11 08-06-2003 20:54




 
Переход