Показать полную графическую версию : [решено] Спасайте! Замена первой строки в текстовом поле
eus_deus
01-09-2013, 13:37
Всем привет!
Спасайте, замучался уже. Надо первую строту в 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, неясно откуда взявшаяся.Надо заменить только первую строку, причем неважно сколько текста в поле - он весь должен сохраниться.Всем спасибо за помощь!
В результате - в текстовом поле цифра 4, неясно откуда взявшаяся. »
Очень даже ясно. Функция StringReplace (http://autoit-script.ru/autoit3_docs/functions/StringReplace.htm):
StringReplace ( "string", "searchstring/start", "replacestring" [, occurrence [, casesense]] )
Параметры:
string Используемая строка.
searchstring/start Строка поиска или позиция символа начала замены.
replacestring Строка замены.
…
А у Вас?! Что есть «$Edit2»?
Далее, eus_deus, почему Вы пишете — «первую строку», а делаете совсем другое — «StringReplace(…, "[Default]"&@CRLF, …»?!
Определитесь.
Замена первой строки может выглядеть, например, так (без проверки ввода):
#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
но мне не нравится Ваша реализация в целом.
eus_deus
01-09-2013, 15:50
мне не нравится Ваша реализация в целом »
Вы думаете, она мне нравиться? Я пытаюсь сделать, как мне надо имеющимися знаниями, которых по autoit у меня явно не хватает
А у Вас?! Что есть «$Edit2»? »
Описано в постановке
текстовое поле »
Очень даже ясно. Функция StringReplace: »
Справку я читал, у меня она есть и лишний привод отрезка со справки ни к чему
Замена первой строки может выглядеть, например, так (без проверки ввода): »
за код спасибо, но не пойдет - неизвестно количество строк
почему Вы пишете — «первую строку», а делаете совсем другое — «StringReplace(…, "[Default]"&@CRLF, …»?! »
Потому что "[Default]"&@CRLF - это реально первая моя строка
eus_deus
01-09-2013, 17:41
Всем спецам спасибо! Помощь в этом вопросе не нужна - пошел другим путем и нашел другую реализацию.
Описано в постановке »
Чёрта с два она «описана»! Вот потому-то надо приводить хотя бы минимально достаточный код.
eus_deus
03-09-2013, 12:58
Iska, если вам надо объяснять, что $EDIT2 - это текстовое поле с которым мне над оперировать, то я не знаю... А код функции, который я пробовал, приведен в первом сообщении. Ваша реализация с массивами - полный бред, вся реализация задачи умещается в три строки.
бы минимально достаточный код »
А минимальный по вашему - это весь, наверное?
Iska, если вам надо объяснять, »
eus_deus, не надо «объяснять». Надо приводить минимально достаточный код. Я не по-русски пишу?
Ваша реализация с массивами - полный бред, вся реализация задачи умещается в три строки. »
Не могу судить о том, чего не видел. Но судя по тому, что видел — говорим, что надо менять первую строку, а вместо этого делаем «StringReplace()», причём, делаем некорректно, на пояснения обижаемся — флаг Вам в руки, коллега.
eus_deus
03-09-2013, 13:32
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
Замена первой строки в текстовом поле
eus_deus, вот так уже лучше.
eus_deus
03-09-2013, 16:08
вопросов еще много, но наверное мне лучше на форум с ними не лезть
но наверное мне лучше на форум с ними не лезть »
Почему? Он для этого и создан. Другое дело, что на вопросы именно по AutoIt быстрее ответят здесь (http://autoit-script.ru/), на профильном ресурсе.
eus_deus
03-09-2013, 19:20
Iska, на профильном, как вы выразились,ресурсе мой профиль забанили навечно, как они написали, без объяснения причины, на следующий день после регистрации. Тема собрала три ответа, это все, что я успел оттуда получить
Просто так не бывает. Приведите ссылку на Ваши сообщения там.
eus_deus
03-09-2013, 20:13
Iska, Моя тема на форуме (http://autoit-script.ru/index.php/topic,14534.0.html).Если скажите, что это из за ника, то отвечу вам сразу - у меня этот ник на многих ресурсах, сайт дал мне его создать нормально, и если он у них так не увязывается, то почему не дали возможности изменения. а так - можно создать вторую (3,4,10) анкету, но я принципиальный - не иду туда, где мне не рады
eus_deus, забанен из-за ника.
Если скажите, что это из за ника, то отвечу вам сразу - у меня этот ник на многих ресурсах »
однако на этом ресурсе - другой, "нормальный".
сайт дал мне его создать нормально, »
сайт не может отделять бессмысленные стучания по клавиатуре от "обычных" ников. это делают люди.
почему не дали возможности изменения »
возможность восстановления есть, на индивидуальной основе. но я бы рекомендовал создать новый профиль предварительно ознакомившись со всеми правилами форума.
можно создать вторую (3,4,10) анкету »
можно хоть 100. однако, по опыту скажу, банить легче чем регистрировать новые. если кому-то нечего делать, то милости просим. не иду туда, где мне не рады »
там не рады не конкретно тебе, а любому кто не удосуживается прочитать правила. любым другим рады безмерно.
ну и напоследок, 99% обитателей данной ветки oszone - это пользователи autoit-script, так что, по сути, ты спрашиваешься у одних и тех же людей. это к вопросу, где тебе потенциально рады или не рады.
eus_deus
04-09-2013, 09:08
kaster, здесь по крайней мере хоть что то отвечают, а не банят сразу. ну может и заведу второй профиль, кто знает...
забанен из-за ника. »
A.6.1?
Плохо, если действительно закрыли без каких-либо разъяснений, поскольку ничему не учит.
Плохо, если действительно закрыли без каких-либо разъяснений, поскольку ничему не учит »
есть спец тема со списком забаненных и причиной. видно должно быть даже гостем.
есть спец тема со списком забаненных и причиной. видно должно быть даже гостем. »
Неудачная реализация. Не вижу явной связки «Правила — Тема: Список забаненных пользователей (http://autoit-script.ru/index.php/topic,1052.0.html)». Разве что пользователю высылается сообщение.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.