Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Спасайте! Замена первой строки в текстовом поле (http://forum.oszone.net/showthread.php?t=267262)

eus_deus 01-09-2013 13:37 2210998

Спасайте! Замена первой строки в текстовом поле
 
Всем привет!
Спасайте, замучался уже. Надо первую строту в 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, неясно откуда взявшаяся.Надо заменить только первую строку, причем неважно сколько текста в поле - он весь должен сохраниться.Всем спасибо за помощь!

Iska 01-09-2013 15:26 2211066

Цитата:

Цитата eus_deus
В результате - в текстовом поле цифра 4, неясно откуда взявшаяся. »

Очень даже ясно. Функция StringReplace:
Цитата:

Код:

StringReplace ( "string", "searchstring/start", "replacestring" [, occurrence [, casesense]] )
Параметры:
string Используемая строка.
searchstring/start Строка поиска или позиция символа начала замены.
replacestring Строка замены.

А у Вас?! Что есть «$Edit2»?

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

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

Iska 01-09-2013 15:43 2211071

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

#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 2211077

Цитата:

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

Вы думаете, она мне нравиться? Я пытаюсь сделать, как мне надо имеющимися знаниями, которых по autoit у меня явно не хватает
Цитата:

Цитата Iska
А у Вас?! Что есть «$Edit2»? »

Описано в постановке
Цитата:

Цитата eus_deus
текстовое поле »

Цитата:

Цитата Iska
Очень даже ясно. Функция StringReplace: »

Справку я читал, у меня она есть и лишний привод отрезка со справки ни к чему

Цитата:

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

за код спасибо, но не пойдет - неизвестно количество строк

Цитата:

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

Потому что "[Default]"&@CRLF - это реально первая моя строка

eus_deus 01-09-2013 17:41 2211130

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

Iska 01-09-2013 23:51 2211290

Цитата:

Цитата eus_deus
Описано в постановке »

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

eus_deus 03-09-2013 12:58 2211957

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

Цитата Iska
бы минимально достаточный код »

А минимальный по вашему - это весь, наверное?

Iska 03-09-2013 13:23 2211966

Цитата:

Цитата eus_deus
Iska, если вам надо объяснять, »

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

Цитата:

Цитата eus_deus
Ваша реализация с массивами - полный бред, вся реализация задачи умещается в три строки. »

Не могу судить о том, чего не видел. Но судя по тому, что видел — говорим, что надо менять первую строку, а вместо этого делаем «StringReplace()», причём, делаем некорректно, на пояснения обижаемся — флаг Вам в руки, коллега.

eus_deus 03-09-2013 13:32 2211971

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

Замена первой строки в текстовом поле

Iska 03-09-2013 13:51 2211983

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

eus_deus 03-09-2013 16:08 2212044

вопросов еще много, но наверное мне лучше на форум с ними не лезть

Iska 03-09-2013 19:10 2212127

Цитата:

Цитата eus_deus
но наверное мне лучше на форум с ними не лезть »

Почему? Он для этого и создан. Другое дело, что на вопросы именно по AutoIt быстрее ответят здесь, на профильном ресурсе.

eus_deus 03-09-2013 19:20 2212133

Iska, на профильном, как вы выразились,ресурсе мой профиль забанили навечно, как они написали, без объяснения причины, на следующий день после регистрации. Тема собрала три ответа, это все, что я успел оттуда получить

Iska 03-09-2013 20:04 2212157

Просто так не бывает. Приведите ссылку на Ваши сообщения там.

eus_deus 03-09-2013 20:13 2212159

Iska, Моя тема на форуме.Если скажите, что это из за ника, то отвечу вам сразу - у меня этот ник на многих ресурсах, сайт дал мне его создать нормально, и если он у них так не увязывается, то почему не дали возможности изменения. а так - можно создать вторую (3,4,10) анкету, но я принципиальный - не иду туда, где мне не рады

kaster 04-09-2013 02:00 2212348

eus_deus, забанен из-за ника.
Цитата:

Цитата eus_deus
Если скажите, что это из за ника, то отвечу вам сразу - у меня этот ник на многих ресурсах »

однако на этом ресурсе - другой, "нормальный".
Цитата:

Цитата eus_deus
сайт дал мне его создать нормально, »

сайт не может отделять бессмысленные стучания по клавиатуре от "обычных" ников. это делают люди.
Цитата:

Цитата eus_deus
почему не дали возможности изменения »

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

Цитата eus_deus
можно создать вторую (3,4,10) анкету »

можно хоть 100. однако, по опыту скажу, банить легче чем регистрировать новые. если кому-то нечего делать, то милости просим.
Цитата:

Цитата eus_deus
не иду туда, где мне не рады »

там не рады не конкретно тебе, а любому кто не удосуживается прочитать правила. любым другим рады безмерно.

ну и напоследок, 99% обитателей данной ветки oszone - это пользователи autoit-script, так что, по сути, ты спрашиваешься у одних и тех же людей. это к вопросу, где тебе потенциально рады или не рады.

eus_deus 04-09-2013 09:08 2212425

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

Iska 04-09-2013 09:20 2212430

Цитата:

Цитата kaster
забанен из-за ника. »

A.6.1?

Плохо, если действительно закрыли без каких-либо разъяснений, поскольку ничему не учит.

kaster 04-09-2013 11:17 2212477

Цитата:

Цитата Iska
Плохо, если действительно закрыли без каких-либо разъяснений, поскольку ничему не учит »

есть спец тема со списком забаненных и причиной. видно должно быть даже гостем.

Iska 04-09-2013 11:35 2212493

Цитата:

Цитата kaster
есть спец тема со списком забаненных и причиной. видно должно быть даже гостем. »

Неудачная реализация. Не вижу явной связки «Правила — Тема: Список забаненных пользователей». Разве что пользователю высылается сообщение.

eus_deus 04-09-2013 11:50 2212500

Товарищи, давайте в теме не флудить, а то меня еще и тут закроют. Пойдемте в другую - будете меня учить работать с массивами

eus_deus 06-09-2013 22:01 2213944

Зарегистрируйте меня кто то на официальном сайте - раз 50 пытался, и мне все время - вы не правильно ответили на вопрос, что правила форума "обязательно" надо соблюдать


Время: 21:01.

Время: 21:01.
© OSzone.net 2001-