Войти

Показать полную графическую версию : [решено] Разбор строк из текстового поля


Страниц : 1 [2]

eus_deus
28-08-2013, 21:22
madmasles, мать моя женщина! Букву пропустил! Это наверное время позднее, надо заканчивать это дело!
Да, так ошибки нет, но и ожидаемого результата тоже

madmasles
28-08-2013, 21:45
eus_deus,
Можно примерно так._Convert();($Edit1)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _Convert();($n_CtrlID)
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $s_Read, $a_Split, $s_Ico, $s_Delim = '#!#', $s_NewString = 'M '

;$s_Read = GUICtrlRead($n_CtrlID)
$s_Read = 'String 1' & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf) & 'String 2' & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf) & 'String 3' & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf) & 'String 4,12345' & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf) & 'String 5' & @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf) & 'String 6'
$a_Split = StringSplit (http://autoit-script.ru/autoit3_docs/functions/StringSplit.htm)($s_Read, @CRLF (http://autoit-script.ru/autoit3_docs/macros.htm#@crlf), 1)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $a_Split[0] < 5 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return)
$s_Ico = StringRegExpReplace (http://autoit-script.ru/autoit3_docs/functions/StringRegExpReplace.htm)($a_Split[4], '^.*,', '')
$s_NewString &= StringRegExpReplace (http://autoit-script.ru/autoit3_docs/functions/StringRegExpReplace.htm)($a_Split[5] & $s_Delim & $s_Ico & $s_Delim & $a_Split[2] & $s_Delim & $a_Split[3], $s_Delim & '$|\s+', '')
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)($s_NewString & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf))
;GUICtrlSetData($n_CtrlID, $s_NewString)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;==>_Convert

eus_deus
28-08-2013, 22:06
Вот так после правки. Работает
Func _Convert()
Local $s_Read, $s_Ico, $s_Delim = '#!#', $s_NewString = 'M '
$s_Read =StringSplit(GUICtrlRead($Edit1),@CRLF,1)
If $s_Read[0] < 5 Then Return
$s_Ico = StringRegExpReplace($s_Read[4], '^.*,', '')
$s_NewString &= StringRegExpReplace($s_Read[5] & $s_Delim & $s_Ico & $s_Delim & $s_Read[2] & $s_Delim & $s_Read[3], $s_Delim & '$|\s+', '')
ConsoleWrite($s_NewString & @LF)
GUICtrlSetData($Edit2, $s_NewString)
EndFunc
Хотя опять наткнулся на камень под водой. В строке, обозначеной переменной $sRead[5] не надо удалять пробелы, так как это подсказка, но в то же время последнее слово подсказки должно писаться слитно с остальной строкой. Пример после работы функции
M Открытьвыделенныефайлы\папкивAIMP3#!#387#!#Programs\Players\AIMP3\AIMP3.exe#!#%P%S
а надо получить
M Открыть выделенные файлы\папки в AIMP3#!#387#!#Programs\Players\AIMP3\AIMP3.exe#!#%P%S

madmasles
28-08-2013, 22:38
$s_NewString &= $a_Split[5] & $s_Delim & StringRegExpReplace($s_Ico & $s_Delim & $a_Split[2] & $s_Delim & $a_Split[3], $s_Delim & '$|\s+', '')

eus_deus
28-08-2013, 22:42
madmasles, все таки учусь)) был на правильном пути - пробовал так
GUICtrlSetData($Edit2, $sRead[5] & $s_NewString)
а надо было то же, но не в ту строку))

madmasles, в этой функции все. Теперь начну чудить форму для других параметров открытия и записи этих строк в файл. Но это уже совсем другая история. Тему считаю закрытой. Будут другие вопросы, другие темы




© OSzone.net 2001-2012