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

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

Ответить
Настройки темы
[решено] Спасайте! Замена первой строки в текстовом поле

Старожил


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


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

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


Всем привет!
Спасайте, замучался уже. Надо первую строту в edit заменить на строку, введенную в inputbox и обновить текстовое поле. Пробовал так
Код: Выделить весь код
Func _NameSection()
$new_name=InputBox("Переименовать секцию","Введите имя секции","","",200,130)
If @error Then Return
$new_name2=StringReplace($Edit2,"[Default]"&@CRLF,"["&$new_name&"]"&@CRLF)
GUICtrlSetData($Edit2,$new_name2)
EndFunc
В результате - в текстовом поле цифра 4, неясно откуда взявшаяся.Надо заменить только первую строку, причем неважно сколько текста в поле - он весь должен сохраниться.Всем спасибо за помощь!

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

 

Ветеран


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

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


Цитата eus_deus:
В результате - в текстовом поле цифра 4, неясно откуда взявшаяся. »
Очень даже ясно. Функция StringReplace:
Цитата:
Код: Выделить весь код
StringReplace ( "string", "searchstring/start", "replacestring" [, occurrence [, casesense]] )
Параметры:
string Используемая строка.
searchstring/start Строка поиска или позиция символа начала замены.
replacestring Строка замены.
А у Вас?! Что есть «$Edit2»?

Далее, eus_deus, почему Вы пишете — «первую строку», а делаете совсем другое — «StringReplace(…, "[Default]"&@CRLF, …»?!

Определитесь.

Отправлено: 15:26, 01-09-2013 | #2



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

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


Ветеран


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

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


Замена первой строки может выглядеть, например, так (без проверки ввода):
читать дальше »
Код: Выделить весь код
#NoTrayIcon

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Array.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $Form1   = GUICreate("Form1", 306, 208, 192, 169)
Local $Edit1   = GUICtrlCreateEdit(StringFormat("One\r\nTwo\r\nThree\r\nFour\r\nFive\r\nSix\r\nSeven\r\nEight"), 8, 8, 169, 185)
Local $Button1 = GUICtrlCreateButton("Button1", 184, 8, 113, 33, $WS_GROUP)

Local $nMsg
Local $aValue

GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$aValue = StringSplit(GUICtrlRead($Edit1), @CR, 2)
			$aValue[0] = InputBox("Переименовать секцию", "Введите имя секции", $aValue[0])
			GUICtrlSetData($Edit1, _ArrayToString($aValue, @CR))
	EndSwitch
WEnd

но мне не нравится Ваша реализация в целом.

Отправлено: 15:43, 01-09-2013 | #3


Старожил


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

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


Цитата Iska:
мне не нравится Ваша реализация в целом »
Вы думаете, она мне нравиться? Я пытаюсь сделать, как мне надо имеющимися знаниями, которых по autoit у меня явно не хватает
Цитата Iska:
А у Вас?! Что есть «$Edit2»? »
Описано в постановке
Цитата eus_deus:
текстовое поле »
Цитата Iska:
Очень даже ясно. Функция StringReplace: »
Справку я читал, у меня она есть и лишний привод отрезка со справки ни к чему

Цитата Iska:
Замена первой строки может выглядеть, например, так (без проверки ввода): »
за код спасибо, но не пойдет - неизвестно количество строк

Цитата Iska:
почему Вы пишете — «первую строку», а делаете совсем другое — «StringReplace(…, "[Default]"&@CRLF, …»?! »
Потому что "[Default]"&@CRLF - это реально первая моя строка

Отправлено: 15:50, 01-09-2013 | #4


Старожил


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

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


Всем спецам спасибо! Помощь в этом вопросе не нужна - пошел другим путем и нашел другую реализацию.

Отправлено: 17:41, 01-09-2013 | #5


Ветеран


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

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


Цитата eus_deus:
Описано в постановке »
Чёрта с два она «описана»! Вот потому-то надо приводить хотя бы минимально достаточный код.

Отправлено: 23:51, 01-09-2013 | #6


Старожил


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

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


Iska, если вам надо объяснять, что $EDIT2 - это текстовое поле с которым мне над оперировать, то я не знаю... А код функции, который я пробовал, приведен в первом сообщении. Ваша реализация с массивами - полный бред, вся реализация задачи умещается в три строки.
Цитата Iska:
бы минимально достаточный код »
А минимальный по вашему - это весь, наверное?

Отправлено: 12:58, 03-09-2013 | #7


Ветеран


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

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


Цитата eus_deus:
Iska, если вам надо объяснять, »
eus_deus, не надо «объяснять». Надо приводить минимально достаточный код. Я не по-русски пишу?

Цитата eus_deus:
Ваша реализация с массивами - полный бред, вся реализация задачи умещается в три строки. »
Не могу судить о том, чего не видел. Но судя по тому, что видел — говорим, что надо менять первую строку, а вместо этого делаем «StringReplace()», причём, делаем некорректно, на пояснения обижаемся — флаг Вам в руки, коллега.

Отправлено: 13:23, 03-09-2013 | #8


Старожил


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

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


Iska, это для того, чтобы видели вы, коллега, и у кого еще встанет подобная задача
Код: Выделить весь код
Func _NameSection()
$S_len=_GUICtrlEdit_LineLength($Edit2,0)
_GUICtrlEdit_SetSel($Edit2, 0, $S_len)
$new_name=InputBox("Переименовать секцию","Введите имя секции","","",200,130)
If @error Then Return
_GUICtrlEdit_ReplaceSel($Edit2, '['&$new_name&']')
EndFunc
Замена первой строки в текстовом поле
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:32, 03-09-2013 | #9


Ветеран


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

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


eus_deus, вот так уже лучше.

Отправлено: 13:51, 03-09-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MySQL - Дописать в начало строки текст каждой записи в опредленном поле Artem-Samsung Программирование и базы данных 7 02-10-2019 20:22
CMD/BAT - Копирование первой строки из файла MultiMax Скриптовые языки администрирования Windows 27 08-03-2017 14:14
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
VBS/WSH/JS - Поиск\редактирование строки в текстовом файле pavvel Скриптовые языки администрирования Windows 2 11-04-2012 16:38
CMD/BAT - [решено] Заменить строки в текстовом файле aos Скриптовые языки администрирования Windows 3 10-02-2012 14:45




 
Переход