Что нового

Получение переменной и её значение из строки

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Подскажите как сделать,у меня есть файл,в котором прописана такая строка " $hMsg = MsgBox(0,"","Это пример") ",я открываю и вытягиваю слова и символы этой функцией

Код:
Global $Temp 

$Open = FileOpen("44.txt")
	
While 1
	$Read = FileReadLine($Open)
	If @error = -1 Then ExitLoop
	$Split = StringSplit($Read," ")
	For $i = 1 To $Split[0] Step 1
		$Temp &= $Split[$i] & @CRLF	
	Next	
WEnd
FileClose($Open)

MsgBox(0,"",$Temp)


Почему в StringSplit задан разделителем пробел?! потому что слова разделяются пробелами,но вот не задача, в MsgBox та тоже есть пробел "Это пример" и получается что функция возвращает мне такую картину

$hMsg
=
MsgBox(0,"","Это
пример")

Как быть,что нужно сделать?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Re: Правильное вытягивание слов из строки

Viktor1703 [?]
Почему в StringSplit задан разделителем пробел?! потому что слова разделяются пробелами
Какие слова?
Что конкретно они из себя представляют?
Если нужно разделить переменную и присваеваемую ей часть, то разделять нужно совсем не по пробелу (не факт что он там вообще будет).
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Re: Правильное вытягивание слов из строки

Да Вы правы,мне нужно разделять переменную и присваеваемую ей часть, они из себя представляют стандартные функции автоита они могут быть такими $hMsg = MsgBox(0,"","Это пример") а могут и без $hMsg, я мало в это разбираюсь и решил сделать через StringSplit, подскажите пожалуйста как нужно сделать.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Re: Правильное вытягивание слов из строки

Viktor1703 [?]
нужно разделять переменную и присваеваемую ей часть, они из себя представляют стандартные функции автоита они могут быть такими $hMsg = MsgBox(0,"","Это пример") а могут и без $hMsg
Код:
Global $Temp

$Open = FileOpen("44.txt")

While 1
    $Read = FileReadLine($Open)
    If @error <> 0 Then ExitLoop
	
	$Temp &= StringRegExpReplace($Read, '^\h*(\$\w+)\h*=\h*(.*)$', '\1' & @CRLF & '\2' & @CRLF)
WEnd

FileClose($Open)
MsgBox(0, "", $Temp)



Добавлено:
Сообщение автоматически объединено:

P.S
Обрати внимание на то как я переименовал тему, дальше сам.
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Спасибо большое,а возможно ли = тоже возвратить?
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Я бы конечно дописал,но текст состоит не из 1 строки а порядка 20 или больше,это скрипты au3, а я не знаю сколько там может быть +,-,=,*,/ и т.д.

Так наверное не получается,просто если в скрипте который будет обрабатываться стоит например $hNumb = $hNumb + 3 То вернутся только $hNumb, вообщем мне нужно все содержимое скрипта вернуть но чтобы все слова,цифры,+-/\, возврящались отдельно, по этому я использовал StringSplit,а разделителем был пробел

Если хотите то я могу написать пример того чего я добиваюсь(Скрипт) и то с помощью чего я это делаю,чтоб облегчить понимание
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Viktor1703 [?]
Если хотите то я могу написать пример того чего я добиваюсь(Скрипт) и то с помощью чего я это делаю,чтоб облегчить понимание
Может лучше на словах обьяснить, для чего это нужно всё?


Добавлено:
Сообщение автоматически объединено:

Viktor1703 [?]
если в скрипте который будет обрабатываться стоит например $hNumb = $hNumb + 3 То вернутся только $hNumb
В моём скрипте? нет, возвращает «$hNumb» и на новой строке «$hNumb + 3».
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Если на словах то делаю скрипт максимально запутанным и сложным:

Код:
Dim $AU7492105[27] = ["0x", "47", "55", "49", "43", "72", "65", "61", "74", "65", "28", "27", "4D", "79", "47", "55", "49", "27", "2C", "34", "30", "30", "2C", "34", "30", "30", "29"]
Dim $AU7985770[44] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "43", "72", "65", "61", "74", "65", "42", "75", "74", "74", "6F", "6E", "28", "27", "4F", "70", "74", "69", "6F", "6E", "73", "27", "2C", "32", "30", "2C", "32", "30", "2C", "31", "34", "30", "2C", "34", "30", "29"]
Dim $AU8559705[21] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "43", "72", "65", "61", "74", "65", "44", "75", "6D", "6D", "79", "28", "29"]
Dim $AU8847018[33] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "43", "72", "65", "61", "74", "65", "43", "6F", "6E", "74", "65", "78", "74", "4D", "65", "6E", "75", "28", "24", "44", "75", "6D", "6D", "79", "29"]
Dim $AU9228828[42] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "43", "72", "65", "61", "74", "65", "4D", "65", "6E", "75", "49", "74", "65", "6D", "28", "27", "4F", "70", "74", "69", "6F", "6E", "31", "27", "2C", "24", "4D", "65", "6E", "75", "5B", "30", "5D", "29"]
Dim $AU9696397[42] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "43", "72", "65", "61", "74", "65", "4D", "65", "6E", "75", "49", "74", "65", "6D", "28", "27", "4F", "70", "74", "69", "6F", "6E", "32", "27", "2C", "24", "4D", "65", "6E", "75", "5B", "30", "5D", "29"]
Dim $AU10327102[42] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "43", "72", "65", "61", "74", "65", "4D", "65", "6E", "75", "49", "74", "65", "6D", "28", "27", "4F", "70", "74", "69", "6F", "6E", "33", "27", "2C", "24", "4D", "65", "6E", "75", "5B", "30", "5D", "29"]
Dim $AU10722337[27] = ["0x", "47", "55", "49", "43", "74", "72", "6C", "47", "65", "74", "48", "61", "6E", "64", "6C", "65", "28", "24", "4D", "65", "6E", "75", "5B", "30", "5D", "29"]
Dim $AU11369929[14] = ["0x", "47", "55", "49", "53", "65", "74", "53", "74", "61", "74", "65", "28", "29"]
Dim $AU11436174[12] = ["0x", "47", "55", "49", "47", "65", "74", "4D", "73", "67", "28", "29"]
Dim $AU11812392[23] = ["0x", "4D", "73", "67", "42", "6F", "78", "28", "30", "2C", "22", "22", "2C", "22", "4F", "70", "74", "69", "6F", "6E", "31", "22", "29"]
Dim $AU12612146[23] = ["0x", "4D", "73", "67", "42", "6F", "78", "28", "30", "2C", "22", "22", "2C", "22", "4F", "70", "74", "69", "6F", "6E", "32", "22", "29"]
Dim $AU13237566[23] = ["0x", "4D", "73", "67", "42", "6F", "78", "28", "30", "2C", "22", "22", "2C", "22", "4F", "70", "74", "69", "6F", "6E", "33", "22", "29"]
Global Const $B7492105 = $AU7492105[0] & $AU7492105[1] & $AU7492105[2] & $AU7492105[3] & $AU7492105[4] & $AU7492105[5] & $AU7492105[6] & $AU7492105[7] & $AU7492105[8] & $AU7492105[9] & $AU7492105[10] & $AU7492105[11] & $AU7492105[12] & $AU7492105[13] & $AU7492105[14] & $AU7492105[15] & $AU7492105[16] & $AU7492105[17] & $AU7492105[18] & $AU7492105[19] & $AU7492105[20] & $AU7492105[21] & $AU7492105[22] & $AU7492105[23] & $AU7492105[24] & $AU7492105[25] & $AU7492105[26]
Global Const $B7985770 = $AU7985770[0] & $AU7985770[1] & $AU7985770[2] & $AU7985770[3] & $AU7985770[4] & $AU7985770[5] & $AU7985770[6] & $AU7985770[7] & $AU7985770[8] & $AU7985770[9] & $AU7985770[10] & $AU7985770[11] & $AU7985770[12] & $AU7985770[13] & $AU7985770[14] & $AU7985770[15] & $AU7985770[16] & $AU7985770[17] & $AU7985770[18] & $AU7985770[19] & $AU7985770[20] & $AU7985770[21] & $AU7985770[22] & $AU7985770[23] & $AU7985770[24] & $AU7985770[25] & $AU7985770[26] & $AU7985770[27] & $AU7985770[28] & $AU7985770[29] & $AU7985770[30] & $AU7985770[31] & $AU7985770[32] & $AU7985770[33] & $AU7985770[34] & $AU7985770[35] & $AU7985770[36] & $AU7985770[37] & $AU7985770[38] & $AU7985770[39] & $AU7985770[40] & $AU7985770[41] & $AU7985770[42] & $AU7985770[43]
Global Const $B8559705 = $AU8559705[0] & $AU8559705[1] & $AU8559705[2] & $AU8559705[3] & $AU8559705[4] & $AU8559705[5] & $AU8559705[6] & $AU8559705[7] & $AU8559705[8] & $AU8559705[9] & $AU8559705[10] & $AU8559705[11] & $AU8559705[12] & $AU8559705[13] & $AU8559705[14] & $AU8559705[15] & $AU8559705[16] & $AU8559705[17] & $AU8559705[18] & $AU8559705[19] & $AU8559705[20]
Global Const $B8847018 = $AU8847018[0] & $AU8847018[1] & $AU8847018[2] & $AU8847018[3] & $AU8847018[4] & $AU8847018[5] & $AU8847018[6] & $AU8847018[7] & $AU8847018[8] & $AU8847018[9] & $AU8847018[10] & $AU8847018[11] & $AU8847018[12] & $AU8847018[13] & $AU8847018[14] & $AU8847018[15] & $AU8847018[16] & $AU8847018[17] & $AU8847018[18] & $AU8847018[19] & $AU8847018[20] & $AU8847018[21] & $AU8847018[22] & $AU8847018[23] & $AU8847018[24] & $AU8847018[25] & $AU8847018[26] & $AU8847018[27] & $AU8847018[28] & $AU8847018[29] & $AU8847018[30] & $AU8847018[31] & $AU8847018[32]
Global Const $B9228828 = $AU9228828[0] & $AU9228828[1] & $AU9228828[2] & $AU9228828[3] & $AU9228828[4] & $AU9228828[5] & $AU9228828[6] & $AU9228828[7] & $AU9228828[8] & $AU9228828[9] & $AU9228828[10] & $AU9228828[11] & $AU9228828[12] & $AU9228828[13] & $AU9228828[14] & $AU9228828[15] & $AU9228828[16] & $AU9228828[17] & $AU9228828[18] & $AU9228828[19] & $AU9228828[20] & $AU9228828[21] & $AU9228828[22] & $AU9228828[23] & $AU9228828[24] & $AU9228828[25] & $AU9228828[26] & $AU9228828[27] & $AU9228828[28] & $AU9228828[29] & $AU9228828[30] & $AU9228828[31] & $AU9228828[32] & $AU9228828[33] & $AU9228828[34] & $AU9228828[35] & $AU9228828[36] & $AU9228828[37] & $AU9228828[38] & $AU9228828[39] & $AU9228828[40] & $AU9228828[41]
Global Const $B9696397 = $AU9696397[0] & $AU9696397[1] & $AU9696397[2] & $AU9696397[3] & $AU9696397[4] & $AU9696397[5] & $AU9696397[6] & $AU9696397[7] & $AU9696397[8] & $AU9696397[9] & $AU9696397[10] & $AU9696397[11] & $AU9696397[12] & $AU9696397[13] & $AU9696397[14] & $AU9696397[15] & $AU9696397[16] & $AU9696397[17] & $AU9696397[18] & $AU9696397[19] & $AU9696397[20] & $AU9696397[21] & $AU9696397[22] & $AU9696397[23] & $AU9696397[24] & $AU9696397[25] & $AU9696397[26] & $AU9696397[27] & $AU9696397[28] & $AU9696397[29] & $AU9696397[30] & $AU9696397[31] & $AU9696397[32] & $AU9696397[33] & $AU9696397[34] & $AU9696397[35] & $AU9696397[36] & $AU9696397[37] & $AU9696397[38] & $AU9696397[39] & $AU9696397[40] & $AU9696397[41]
Global Const $B10327102 = $AU10327102[0] & $AU10327102[1] & $AU10327102[2] & $AU10327102[3] & $AU10327102[4] & $AU10327102[5] & $AU10327102[6] & $AU10327102[7] & $AU10327102[8] & $AU10327102[9] & $AU10327102[10] & $AU10327102[11] & $AU10327102[12] & $AU10327102[13] & $AU10327102[14] & $AU10327102[15] & $AU10327102[16] & $AU10327102[17] & $AU10327102[18] & $AU10327102[19] & $AU10327102[20] & $AU10327102[21] & $AU10327102[22] & $AU10327102[23] & $AU10327102[24] & $AU10327102[25] & $AU10327102[26] & $AU10327102[27] & $AU10327102[28] & $AU10327102[29] & $AU10327102[30] & $AU10327102[31] & $AU10327102[32] & $AU10327102[33] & $AU10327102[34] & $AU10327102[35] & $AU10327102[36] & $AU10327102[37] & $AU10327102[38] & $AU10327102[39] & $AU10327102[40] & $AU10327102[41]
Global Const $B10722337 = $AU10722337[0] & $AU10722337[1] & $AU10722337[2] & $AU10722337[3] & $AU10722337[4] & $AU10722337[5] & $AU10722337[6] & $AU10722337[7] & $AU10722337[8] & $AU10722337[9] & $AU10722337[10] & $AU10722337[11] & $AU10722337[12] & $AU10722337[13] & $AU10722337[14] & $AU10722337[15] & $AU10722337[16] & $AU10722337[17] & $AU10722337[18] & $AU10722337[19] & $AU10722337[20] & $AU10722337[21] & $AU10722337[22] & $AU10722337[23] & $AU10722337[24] & $AU10722337[25] & $AU10722337[26]
Global Const $B11369929 = $AU11369929[0] & $AU11369929[1] & $AU11369929[2] & $AU11369929[3] & $AU11369929[4] & $AU11369929[5] & $AU11369929[6] & $AU11369929[7] & $AU11369929[8] & $AU11369929[9] & $AU11369929[10] & $AU11369929[11] & $AU11369929[12] & $AU11369929[13]
Global Const $B11436174 = $AU11436174[0] & $AU11436174[1] & $AU11436174[2] & $AU11436174[3] & $AU11436174[4] & $AU11436174[5] & $AU11436174[6] & $AU11436174[7] & $AU11436174[8] & $AU11436174[9] & $AU11436174[10] & $AU11436174[11]
Global Const $B11812392 = $AU11812392[0] & $AU11812392[1] & $AU11812392[2] & $AU11812392[3] & $AU11812392[4] & $AU11812392[5] & $AU11812392[6] & $AU11812392[7] & $AU11812392[8] & $AU11812392[9] & $AU11812392[10] & $AU11812392[11] & $AU11812392[12] & $AU11812392[13] & $AU11812392[14] & $AU11812392[15] & $AU11812392[16] & $AU11812392[17] & $AU11812392[18] & $AU11812392[19] & $AU11812392[20] & $AU11812392[21] & $AU11812392[22]
Global Const $B12612146 = $AU12612146[0] & $AU12612146[1] & $AU12612146[2] & $AU12612146[3] & $AU12612146[4] & $AU12612146[5] & $AU12612146[6] & $AU12612146[7] & $AU12612146[8] & $AU12612146[9] & $AU12612146[10] & $AU12612146[11] & $AU12612146[12] & $AU12612146[13] & $AU12612146[14] & $AU12612146[15] & $AU12612146[16] & $AU12612146[17] & $AU12612146[18] & $AU12612146[19] & $AU12612146[20] & $AU12612146[21] & $AU12612146[22]
Global Const $B13237566 = $AU13237566[0] & $AU13237566[1] & $AU13237566[2] & $AU13237566[3] & $AU13237566[4] & $AU13237566[5] & $AU13237566[6] & $AU13237566[7] & $AU13237566[8] & $AU13237566[9] & $AU13237566[10] & $AU13237566[11] & $AU13237566[12] & $AU13237566[13] & $AU13237566[14] & $AU13237566[15] & $AU13237566[16] & $AU13237566[17] & $AU13237566[18] & $AU13237566[19] & $AU13237566[20] & $AU13237566[21] & $AU13237566[22]

#include <GUIMenu.au3> 

$hForm = Execute(BinaryToString($B7492105)) ;GUICreate('MyGUI',400,400) 
$Button = Execute(BinaryToString($B7985770)) ;GUICtrlCreateButton('Options',20,20,140,40) 
$Dummy = Execute(BinaryToString($B8559705)) ;GUICtrlCreateDummy() 

Dim $Menu[4] 

$Menu[0] = Execute(BinaryToString($B8847018)) ;GUICtrlCreateContextMenu($Dummy) 
$Menu[1] = Execute(BinaryToString($B9228828)) ;GUICtrlCreateMenuItem('Option1',$Menu[0]) 
$Menu[2] = Execute(BinaryToString($B9696397)) ;GUICtrlCreateMenuItem('Option2',$Menu[0]) 
$Menu[3] = Execute(BinaryToString($B10327102)) ;GUICtrlCreateMenuItem('Option3',$Menu[0]) 
$Menu[0] = Execute(BinaryToString($B10722337)) ;GUICtrlGetHandle($Menu[0]) 

Execute(BinaryToString($B11369929)) ;GUISetState() 

While 1 
    Switch Execute(BinaryToString($B11436174)) ;GUIGetMsg() 
        Case -3 
            ExitLoop 
        Case $Button 
            _GUICtrlMenu_TrackPopupMenu($Menu[0],$hForm) 
        Case $Menu[1] 
            Execute(BinaryToString($B11812392)) ;MsgBox(0,"","Option1") 
        Case $Menu[2] 
            Execute(BinaryToString($B12612146)) ;MsgBox(0,"","Option2") 
        Case $Menu[3] 
            Execute(BinaryToString($B13237566)) ;MsgBox(0,"","Option3") 
    EndSwitch 
WEnd


P.S. И этот скрипт работает.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Viktor1703 [?]
Если на словах то делаю скрипт максимально запутанным и сложным
Я могу написать скрипт, который пропарсит этот скрипт, и выдаст понятный результат (исходный код?).

Я всё равно не понял для чего читать строки кода из файла.
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Просто есть функция в которую вписывается au3 файл и файл в котором записаны те функции которые нужно перевести в такой вид,далее функция сравнивает полученный текст и переводит, и эта функция создаёт файл с уже не понятным кодом,да я не сомниваюсь что можно перевести и обратно,но + в том что я могу изменять её как хочу и делать ещё более не читабельной,а вообще это будет не для ленивых злоумышленников.... или если есть наиболее простой вариант как это можно делать - хотелось бы взглянуть на пример.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Viktor1703 [?]
или если есть наиболее простой вариант как это можно делать - хотелось бы взглянуть на пример.
Я не буду отвечать на это, т.к тема уже не раз поднималась на форуме, и ответ известен.

Что касается темы, можно вот такой трюк сделать:

Код:
Global $sTemp

$hOpen = FileOpen("44.txt")

While 1
    $sRead = FileReadLine($hOpen)
    If @error <> 0 Then ExitLoop
    
	$aQuotes = StringRegExp($sRead, '("[^"]*"|''[^'']*'')', 3)
	
	For $i = 0 To UBound($aQuotes)-1
		$sRead = StringReplace($sRead, $aQuotes[$i], '~Quote_' & $i)
	Next
	
	$aSplit = StringRegExp($sRead, '(?!>")([^\h]+)(?!")', 3)
	
	For $i = 0 To UBound($aSplit)-1
		If StringInStr($aSplit[$i], '~Quote_') Then
			For $j = 0 To UBound($aQuotes)-1
				$aSplit[$i] = StringReplace($aSplit[$i], '~Quote_' & $j, $aQuotes[$j])
			Next
		EndIf
		
		$sTemp &= $aSplit[$i] & @CRLF
	Next
    
WEnd

FileClose($hOpen)
MsgBox(0, "", $sTemp)


т.е замена содержимого всех кавычек на некий идентификатор (не содержащий пробелы естественно), и после разделения строки пробелом, восстановление этого содержимого в каждой строке.
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Спасибо большоё,теперь буду рег.выражения изучать :smile:
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Я извиняюсь,но у меня ещё один вопрос,а можно с помощью этого примера собрать расположение кода обратно,при первой обработке он делает как мне нужно и в конце каждого слова(символа,цифры) я добавляю "{Delimiter}" - это будет разделитель для функции StringSplit() чтобы не разделять код с помощью пробела,например код будет выглядеть так:

Код:
#include{Delimiter}
<GUIMenu.au3>{Delimiter}
$hForm{Delimiter}
={Delimiter}
GUICreate('MyGUI',400,400){Delimiter}
$Button{Delimiter}
={Delimiter}
GUICtrlCreateButton('Options',20,20,140,40){Delimiter}
$Dummy{Delimiter}
={Delimiter}
GUICtrlCreateDummy(){Delimiter}
Dim{Delimiter}
$Menu[4]{Delimiter}
$Menu[0]{Delimiter}
={Delimiter}
GUICtrlCreateContextMenu($Dummy){Delimiter}
$Menu[1]{Delimiter}
={Delimiter}
GUICtrlCreateMenuItem('Option 1',$Menu[0]){Delimiter}
$Menu[2]{Delimiter}
={Delimiter}
GUICtrlCreateMenuItem('Option 2',$Menu[0]){Delimiter}
$Menu[3]{Delimiter}
={Delimiter}
GUICtrlCreateMenuItem('Option 3',$Menu[0]){Delimiter}
$Menu[0]{Delimiter}
={Delimiter}
GUICtrlGetHandle($Menu[0]){Delimiter}
GUISetState(){Delimiter}
While{Delimiter}
1{Delimiter}
Switch{Delimiter}
GUIGetMsg(){Delimiter}
Case{Delimiter}
-3{Delimiter}
ExitLoop{Delimiter}
Case{Delimiter}
$Button{Delimiter}
_GUICtrlMenu_TrackPopupMenu($Menu[0],$hForm){Delimiter}
Case{Delimiter}
$Menu[1]{Delimiter}
MsgBox(0,"","Option 1"){Delimiter}
Case{Delimiter}
$Menu[2]{Delimiter}
MsgBox(0,"","Option 2"){Delimiter}
Case{Delimiter}
$Menu[3]{Delimiter}
MsgBox(0,"","Option 3"){Delimiter}
EndSwitch{Delimiter}
WEnd{Delimiter}

Нужно теперь собрать его обратно чтоб стояло на своих местах(если конечно это возможно) либо не переносить каждое слово(символ,цифру),а сразу же ставить после них вот это "{Delimiter}",сколько не пробывал - не получалось,либо вылетал код.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Viktor1703 [?]
можно с помощью этого примера собрать расположение кода обратно,при первой обработке он делает как мне нужно и в конце каждого слова(символа,цифры) я добавляю "{Delimiter}" - это будет разделитель для функции StringSplit() чтобы не разделять код с помощью пробела
Я не понял, так если пробел не нужен, то и мой пример тут ни к чему.

Собрать обратно очень просто (из моего примера):

Код:
$aSplit = StringSplit($sTemp, @CRLF, 1)
$sSrc = ""

For $i = 1 To $aSplit[0]
	$sSrc &= $aSplit[$i] & " "
Next

MsgBox(0, "", $sSrc)



Добавлено:
Сообщение автоматически объединено:

Хотя если строк будет несколько это может вызвать проблемы, нужно немного исправить код разделения строк:

Код:
Global $sTemp

$hOpen = FileOpen("44.txt")

While 1
    $sRead = FileReadLine($hOpen)
    If @error <> 0 Then ExitLoop
    
    $aQuotes = StringRegExp($sRead, '("[^"]*"|''[^'']*'')', 3)
    
    For $i = 0 To UBound($aQuotes)-1
        $sRead = StringReplace($sRead, $aQuotes[$i], '~Quote_' & $i)
    Next
    
    $aSplit = StringRegExp($sRead, '(?!>")([^\h]+)(?!")', 3)
    
    For $i = 0 To UBound($aSplit)-1
        If StringInStr($aSplit[$i], '~Quote_') Then
            For $j = 0 To UBound($aQuotes)-1
                $aSplit[$i] = StringReplace($aSplit[$i], '~Quote_' & $j, $aQuotes[$j])
            Next
        EndIf
        
        $sTemp &= $aSplit[$i] & @CRLF
    Next
	
	$sTemp &= "{NewLine}" & @CRLF
WEnd

FileClose($hOpen)
MsgBox(0, "", $sTemp)

$aSplit = StringSplit($sTemp, @CRLF, 1)
$sSrc = ""

For $i = 1 To $aSplit[0]
	If StringInStr($aSplit[$i], "{NewLine}") Then
		$sSrc &= StringReplace($aSplit[$i], "{NewLine}", @CRLF)
	Else
		$sSrc &= $aSplit[$i] & " "
	EndIf
Next

MsgBox(0, "", $sSrc)
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
Да, оно собралось,но так код не будет работать если из него удалить {Delimiters},должно получится так для примера:

Код:
$hItem{Delimiters}={Delimiters}3{Delimiters}
$hLabel{Delimiters}={Delimiters}GUICtrlCreateLabel("пример кода" ,3,3,20,20){Delimiters}


Это для того чтоб создать промежуточный файл(Тэмп) с {Delimiters} вместо пробела,но код должен остаться так как стоит в исходнике с которого считываете,далее запускается другая функция которая будет отсекать строки с помощью {Delimiters} а не пробела,я понимаю,очень сложно.....
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Viktor1703 [?]
оно собралось,но так код не будет работать если из него удалить {Delimiters}
При чём здесь {Delimiters}, пример работает с пробелами.

я понимаю,очень сложно
Ничего сложного тут нет, мне кажется ты сам всё усложняешь.
 
Автор
Viktor1703

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
410
{Delimiters} - для того чтобы добавить в скрипт после каждого слова(цифры,знака) это сочетание,и тогда я мог указать в своей функции разделителем не пробел а {Delimiters},так как вы сами говорили что не вовсех скриптах могут быть пробелы и такая строка тоже разделяется на 2 части - чего не нужно - MsgBox(0,"Example","Пример мсг")
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
Viktor1703 [?]
вы сами говорили что не вовсех скриптах могут быть пробелы и такая строка тоже разделяется на 2 части - чего не нужно
Я для кого код писал?
Там подобная строка не разделяется!

В итоге, проблема решена?
 
Верх