Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

Старожил


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


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

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


Всем привет!
В текстовом поле edit1 имеется текст вида
Код: Выделить весь код
1 строка
2 строка
3 строка
4 строка
5 строка
6 строка
7 строка
Нужна функция для кнопки button1, при нажатии на какую в текстовом поле edit2 получилась бы одна строка такого вида:
Код: Выделить весь код
M 5 строка#!#4 строка#!#2 строка#!#1 строка
И еще может понадобиться всесто всей третьей строки извлечение только ее части и вставка в код выше.
Спасибо за советы!

Отправлено: 19:14, 27-08-2013

 

Ветеран


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

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


Цитата eus_deus:
Нужна функция для кнопки button1, при нажатии на какую в текстовом поле edit2 получилась бы одна строка такого вида:
Код: Выделить весь код
M 5 строка#!#4 строка#!#2 строка#!#1 строка
»
По какому принципу из текста получается такая строка?

Отправлено: 21:04, 27-08-2013 | #2



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

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


Старожил


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

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


Цитата Iska:
По какому принципу из текста получается такая строка? »
Ответ здесь
Цитата eus_deus:
Нужна функция для кнопки button1, при нажатии на какую в текстовом поле edit2 получилась бы одна строка »
Она нигде еще не получается, но мне нужна строка такого вида. Может, текст не такой будет, может разделитель, может не те номера строк - хочу общий принцип понять, а допереть не могу.
Строки в одну сливаю с разделителем, а вот как их выставить в порядке не соображу

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


Ветеран


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

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


Цитата eus_deus:
Ответ здесь… »
«Здесь» — нет ответа.
Цитата:
Но, Снежная Королева, нельзя из букв «Ж», «О», «П» и «А» — сложить слово «Вечность».
Объясните, что за «M » в начале результирующей строки, откуда она берётся, по какому принципу? Растолкуйте, куда пропала третья исходная строка, почему она отсутствует в результирующей; если надо исключать какие-то строки при слиянии, то, опять же — по какому принципу.

А Вы говорите «Ответ здесь» .

Цитата eus_deus:
Строки в одну сливаю с разделителем, а вот как их выставить в порядке не соображу »
В каком порядке? В обратном что ли?
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:12, 28-08-2013 | #4


Старожил


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

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


Iska, итак, по порядку читаем.
Цитата Iska:
В каком порядке? В обратном что ли? »
Порядок строк указан - 5,4,2,1, каторые разделены символами #!#. Это видно в моем сообщении:
Цитата eus_deus:
M 5 строка#!#4 строка#!#2 строка#!#1 строка »
Касательно этого вопроса
Цитата Iska:
Объясните, что за «M » в начале результирующей строки, откуда она берётся, по какому принципу? »
могу ответить - в начале строки которую я хочу получить, должен стоять текст - неважно, М это или Р или Т - важен способ его попадания туда. Он ниоткуда не береться, его в строках нет, но он там нужен
Цитата Iska:
если надо исключать какие-то строки при слиянии, то, опять же — по какому принципу »
Третья строка, если и понадобиться, то только ее часть. А так она там не нужна, равно как и седьмая

Iska, теперь вопрос у меня я написал, какой вид у меня имеется и что я хочу получать. Вид и порядок строк указаны с самого начала. Для успеха получения кода этого хватает.. Следующим вашим вопросом будет - зачем мне буква М и почему нужны строки в таком порядке? Если так, то давайте просто закроем тему, так как она пользы и знаний не принесет ни мне, ни другим участникам форума

Отправлено: 14:27, 28-08-2013 | #5


Ветеран


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

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


eus_deus, не надо язвить. Приводите необходимую и достаточную информацию сразу — не будет возникать уточняющих вопросов.

Код: Выделить весь код
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

$Form1   = GUICreate("Form1", 440, 200, 320, 240)
$Edit1   = GUICtrlCreateEdit(StringReplace("First;Second;Third;Fourth;Fifth;Sixth;Seventh;Eighth", ";", @CRLF), 8, 8, 153, 161)
$Edit2   = GUICtrlCreateEdit("", 153 + 8 * 2, 8, 153, 161)
$Button1 = GUICtrlCreateButton("Button1", 153 * 2 + 8 * 4, 8, 89, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$aValues = StringSplit(GUICtrlRead($Edit1), @CRLF, 1)

			_ArrayDelete($aValues, 7)
			_ArrayDelete($aValues, 3)
			_ArrayDelete($aValues, 0)

			_ArrayReverse($aValues)

			GUICtrlSetData($Edit2, _ArrayToString($aValues, @CRLF))
	EndSwitch
WEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:38, 28-08-2013 | #6


Старожил


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

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


Iska, язвить и не думал - задал встречный вопрос. Мне просто казалось, что приведенной информации хватит - имею то-то, хочу получить то-то... Спасибо вам за внимание

Iska, а строки выстроены в вашем примере просто в обратном порядке с удалением третьей и седьмой строки? Я же делал акцент на порядке строк - 5,4,2,1. Спасибо на этом, буду копать в библиотеке работы с массивами. Еще текст добавлять надо все равно

Отправлено: 15:43, 28-08-2013 | #7


Ветеран


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

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


Цитата eus_deus:
Iska, а строки выстроены в вашем примере просто в обратном порядке с удалением третьей и седьмой строки? »
Да. Вы упоминали ещё про седьмую:
Цитата eus_deus:
А так она там не нужна, равно как и седьмая »
посему я взял для примера восемь строк. После разбиения строки на подстроки («StringSplit()») нулевой элемент полученного массива содержит количество элементов, потому его удаляем перед обращением порядка элементов массива («_ArrayReverse()»). Удалять лишние/ненужные элементы удобнее с конца.

Цитата eus_deus:
Я же делал акцент на порядке строк - 5,4,2,1. »
В принципе, ничто не мешает просто взять полученный разбиением массив и склеить потребные элементы (если Вы уверены в их наличии):
Код: Выделить весь код
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;#include <Array.au3>

$Form1   = GUICreate("Form1", 440, 200, 320, 240)
$Edit1   = GUICtrlCreateEdit(StringReplace("First;Second;Third;Fourth;Fifth;Sixth;Seventh;Eighth", ";", @CRLF), 8, 8, 153, 161)
$Edit2   = GUICtrlCreateEdit("", 153 + 8 * 2, 8, 153, 161)
$Button1 = GUICtrlCreateButton("Button1", 153 * 2 + 8 * 4, 8, 89, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$aValues = StringSplit(GUICtrlRead($Edit1), @CRLF, 1)

			;_ArrayDelete($aValues, 7)
			;_ArrayDelete($aValues, 3)
			;_ArrayDelete($aValues, 0)

			;_ArrayReverse($aValues)

			;GUICtrlSetData($Edit2, _ArrayToString($aValues, @CRLF))
			GUICtrlSetData($Edit2, $aValues[5] & @CRLF & $aValues[4] & @CRLF & $aValues[2] & @CRLF & $aValues[1])
	EndSwitch
WEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 28-08-2013 | #8


Старожил


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

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


Iska, это уже практически все, что я искал. Функция имее вид
Код: Выделить весь код
Func _Convert()
$aS=StringSplit(GUICtrlRead($Edit1),@CRLF,1)
GUICtrlSetData($Edit2, $aS[5] & "#!#" & $aS[4] & "#!#" & $aS[2] & "#!#" & $aS[1])
EndFunc
Осталось к результату спереди добавить текст и сделать выборку части третьей строки, может понадобиться. Но в целом - вопрос решен

Отправлено: 16:22, 28-08-2013 | #9


Ветеран


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

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


Свистите, если что .

Отправлено: 16:33, 28-08-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] из строк текстового файла нужно вырезать определенные символы alek2012 Скриптовые языки администрирования Windows 10 11-07-2012 16:54
CMD/BAT - Смена кодировки текстового файла, поиск строки и разбор значения profcom Скриптовые языки администрирования Windows 0 10-11-2011 20:20
CMD/BAT - Поиск и копирование нескольких строк из текстового файла. valen Скриптовые языки администрирования Windows 0 07-11-2011 17:27
CMD/BAT - [решено] Перенос и удаление строк из текстового файла sk8ter Скриптовые языки администрирования Windows 15 03-10-2010 19:35
JavaScript: вывод текста из текстового поля Jekamajor Вебмастеру 5 10-08-2005 12:43




 
Переход