Skif_off
Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору comrades, подскажите, пожалуйста, как сделать правильнее (хотя не уверен, что вопрос в тему): есть скрипт для декодирования base64/uue из буфера обмена, скрипту в качестве параметра передается путь Код: #NoTrayIcon $sPath = $CmdLine[1] $sText = _ClipBoard_GetData() Local $sSearchedB = "Content-Transfer-Encoding: base64", $sSearchedU = "begin ([0-9]{1,5}?) " $aLines = StringSplit($sText, @CRLF, 1) For $i = 1 To $aLines[0] If StringInStr($aLines[$i], $sSearchedB) Then $sFileAtt = _FileNameB($aLines) $sFileName = $sFileAtt & ".b64" ExitLoop EndIf Next For $i = 1 To $aLines[0] If StringRegExp($aLines[$i], $sSearchedU) Then $sFileAtt = StringRegExpReplace($aLines[$i], $sSearchedU, "") $sFileName = $sFileAtt & ".uue" ExitLoop EndIf Next $sFile = FileOpen($sPath & $sFileName, 1) If $sFile = -1 Then MsgBox(4096, "Ошибка", "Невозможно открыть файл.") Exit EndIf FileWrite($sFile, $sText) FileClose($sFile) RunWait(@ScriptDir & '\uudeview.exe ' & '"' & $sPath & $sFileName & '"' & ' -p ' & $sPath & ' -q -i', "", @SW_HIDE) FileDelete($sPath & $sFileName) Exit Func _FileNameB($aLines) Local $sSearchedB2 = "Content-Disposition: attachment" For $i = 1 To $aLines[0] If StringInStr($aLines[$i], $sSearchedB2) Then $sFileName = StringReplace($aLines[$i], 'Content-Disposition: attachment; filename=', "") $sFileName = StringReplace($sFileName, '"', "") ExitLoop ElseIf @error = 0 Then $sFileName = "UNKNOWN.001" ExitLoop EndIf Next Return $sFileName EndFunc | столкнулся с проблемой разделителя для команды StringSplit - @CRLF взял из какого-то примера, но если тип окончания строки Unix, то все содержимое буфера попадает в одну строку массива, что неприемлемо. Изменил на @CR, но не понимаю, чем это потенциально грозит? | Всего записей: 6628 | Зарегистр. 28-01-2008 | Отправлено: 20:53 09-11-2013 | Исправлено: Skif_off, 21:03 09-11-2013 |
|