Компьютерный форум 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=242909)

support23 18-09-2012 13:41 1990822

Разбить данные одной строки по полям формы
 
Доброго дня,
есть форма с полями:
Код:

$pochta = GUICtrlCreateInput('', 15, 10, 185, 21)
GUICtrlCreateLabel (" - Адрес почты", 210, 13)

$login = GUICtrlCreateInput('', 15, 40, 185, 21)
GUICtrlCreateLabel (" - Логин", 210, 43)

$surname = GUICtrlCreateInput('', 15, 70, 185, 21)
GUICtrlCreateLabel (" - Фамилия", 210, 70)

$name = GUICtrlCreateInput('', 15, 100, 185, 21)
GUICtrlCreateLabel (" - Имя", 210, 100)

$first = GUICtrlCreateInput('', 15, 135, 185, 21)
GUICtrlCreateLabel (" - Отчество", 210, 135)

есть строка: Фамилия Имя Отчество <login@server.ru>

как данные из строки разбить по соответствующим полям, фамилия отдельно, имя отдельно, и т.д. ?

например ввел строку - Фамилия Имя Отчество <login@server.ru> нажал кнопку, и заполнились поля формы.

Creat0R 18-09-2012 17:16 1990929

Цитата:

Цитата support23
как данные из строки разбить по соответствующим полям, фамилия отдельно, имя отдельно, и т.д. ? »

Код:

#include <GUIConstantsEx.au3>

$hGUI = GUICreate('Test Script', 300, 300)

$pochta = GUICtrlCreateInput('', 15, 10, 185, 21)
GUICtrlCreateLabel(" - Адрес почты", 210, 13)

$login = GUICtrlCreateInput('', 15, 40, 185, 21)
GUICtrlCreateLabel(" - Логин", 210, 43)

$surname = GUICtrlCreateInput('', 15, 70, 185, 21)
GUICtrlCreateLabel(" - Фамилия", 210, 70)

$name = GUICtrlCreateInput('', 15, 100, 185, 21)
GUICtrlCreateLabel(" - Имя", 210, 100)

$first = GUICtrlCreateInput('', 15, 135, 185, 21)
GUICtrlCreateLabel(" - Отчество", 210, 135)

$iFill_Bttn = GUICtrlCreateButton('Заполнить', 15, 270, 70, 20)

GUISetState(@SW_SHOW, $hGUI)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iFill_Bttn
            $sLine = 'Фамилия Имя Отчество <login@server.ru>'

            $aInputs = StringSplit($sLine, ' ')
            $sLogin = StringRegExpReplace($sLine, '.*?<(.*?)@.*', '\1')

            GUICtrlSetData($pochta, $aInputs[4])
            GUICtrlSetData($login, $sLogin)
            GUICtrlSetData($surname, $aInputs[1])
            GUICtrlSetData($name, $aInputs[2])
            GUICtrlSetData($first, $aInputs[3])
    EndSwitch
WEnd


support23 19-09-2012 09:23 1991317

Спасибо!
А можно его немного исправить, чтобы адрес почты оставался без < > , и Фамилия Имя Отчество <login@server.ru> я мог вводит не в теле скрипта, а через GUICtrlCreateInput ?

Creat0R 19-09-2012 12:06 1991380

Цитата:

Цитата support23
можно его немного исправить, чтобы адрес почты оставался без < > , и Фамилия Имя Отчество <login@server.ru> я мог вводит не в теле скрипта, а через GUICtrlCreateInput ? »

Код:

#include <GUIConstantsEx.au3>

$hGUI = GUICreate('Test Script', 300, 300)

$iPochta_Input = GUICtrlCreateInput('', 15, 10, 185, 21)
GUICtrlCreateLabel(" - Адрес почты", 210, 13)

$iLogin_Input = GUICtrlCreateInput('', 15, 40, 185, 21)
GUICtrlCreateLabel(" - Логин", 210, 43)

$iSurName_Input = GUICtrlCreateInput('', 15, 70, 185, 21)
GUICtrlCreateLabel(" - Фамилия", 210, 70)

$iName_Input = GUICtrlCreateInput('', 15, 100, 185, 21)
GUICtrlCreateLabel(" - Имя", 210, 100)

$iFirst_Input = GUICtrlCreateInput('', 15, 135, 185, 21)
GUICtrlCreateLabel(" - Отчество", 210, 135)

$iData_Input = GUICtrlCreateInput('Фамилия Имя Отчество <login@server.ru>', 15, 220, 185, 21)
GUICtrlCreateLabel(" - Данные", 210, 220)

$iFill_Bttn = GUICtrlCreateButton('Заполнить', 15, 270, 70, 20)

GUISetState(@SW_SHOW, $hGUI)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $iFill_Bttn
            $sLine = GUICtrlRead($iData_Input)

            $aInputs = StringSplit($sLine, ' ')
            $sLogin = StringRegExpReplace($sLine, '.*?<(.*?)@.*', '\1')

            GUICtrlSetData($iPochta_Input, StringRegExpReplace($aInputs[4], '^<|>$', ''))
            GUICtrlSetData($iLogin_Input, $sLogin)
            GUICtrlSetData($iSurName_Input, $aInputs[1])
            GUICtrlSetData($iName_Input, $aInputs[2])
            GUICtrlSetData($iFirst_Input, $aInputs[3])
    EndSwitch
WEnd


support23 19-09-2012 14:01 1991456

Большое спасибо! То что нужно!

Creat0R 19-09-2012 15:18 1991500

Цитата:

Цитата support23
То что нужно! »

По решению проблемы тему принято отмечать решённой (вверху темы).


Время: 19:08.

Время: 19:08.
© OSzone.net 2001-