|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] FileOpenDialog - обработкой массива при выборе одного или нескольких файлов |
|
[решено] FileOpenDialog - обработкой массива при выборе одного или нескольких файлов
|
Ветеран Сообщения: 553 |
Профиль | Отправить PM | Цитировать При выборе одного файла возвращается подобный массив.
$aArray[0] - 1 $aArray[1] - C:\Program Files\7-Zip\7zFM.exe При выборе двух и более файлов возвращается подобный массив. $aArray[0] - 3 $aArray[1] - C:\Program Files\7-Zip $aArray[2] - 7zCon.sfx $aArray[3] - 7zFM.exe Мне нужно что бы массивы были одинаковые при выборе одного или нескольких файлов. А иначе в МОЁМ случае их очень трудно разобрать Я вобщем набросал тут, что-то ... я правильно всё сделал ? Косяки со слешем получаются ...если файл находится в корне диска. #include <Array.au3> $sMultiOpenFiles = FileOpenDialog("", @WindowsDir & "\", "File (*.*)", 1 + 4 + 8 + 16) If Not (@error) Then $aMultiOpenFiles = StringSplit($sMultiOpenFiles, "|", @CRLF) If UBound($aMultiOpenFiles) - 1 = 1 Then $aSplitFileName = StringSplit($aMultiOpenFiles[1], "\") $iIndex = UBound($aSplitFileName) - 1 $aA = StringTrimRight($aMultiOpenFiles[1], StringLen($aSplitFileName[$iIndex])) If StringRight($aA, 1) = '\' Then $aA = StringTrimRight($aA, 1) Dim $aDuble[2] = [$aMultiOpenFiles[0] ,$aA] Dim $aMultiOpenFiles[3] = [$aDuble[0], $aDuble[1], $aSplitFileName[$iIndex]] EndIf _ArrayDisplay($aMultiOpenFiles) EndIf |
|
Отправлено: 13:16, 01-02-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Я использую такую функцию:
#include <Array.au3> $aSelected = _FileOpenDialogEx("Title", "C:\", "All (*.*)", 4, -1) ;1 для возврата строки полных путей к выбранным файлам If @error Then Exit ;ConsoleWrite($aSelected & @CRLF) _ArrayDisplay($aSelected) ;$iReturnMode = -1 (default) - Return array of selected files ;$iReturnMode = 1 (default) - Return string of selected files (all files returned as full file pathes) Func _FileOpenDialogEx($sTitle, $sInitDir, $sFilter, $iOptions=0, $iReturnMode=-1, $sDefaultName='', $hWnd=0) Local $sFOD_Ret = FileOpenDialog($sTitle, $sInitDir, $sFilter, $iOptions, $sDefaultName, $hWnd) If @error Then Return SetError(@error, @extended, $sFOD_Ret) Local $sRet = '' Local $aSplit_Str = StringSplit($sFOD_Ret, '|') If @error Or $aSplit_Str[0] < 2 Then If $iReturnMode > 0 Then Return $sFOD_Ret Return $aSplit_Str EndIf Local $sInit_Path = StringRegExpReplace($aSplit_Str[1], '([^\\])\\*$', '\1') For $i = 2 To $aSplit_Str[0] $sRet &= $sInit_Path & '\' & $aSplit_Str[$i] & '|' Next $sRet = StringRegExpReplace($sRet, '\|+$', '') If $iReturnMode > 0 Then Return $sRet Return StringSplit($sRet, '|') EndFunc |
------- Отправлено: 14:17, 01-02-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать Creat0R, я когда полгода назад похожую функцию писал для форматирования строки, то решил не использовать регулярки, но все равно без разбивки данных через массив не обошлось:
#include <String.au3> #include <Array.au3> $add_fullpath_str=_FopenDlgStr(@WindowsDir & "\", "Все файлы (*.*)", 5) MsgBox(4096,"Info:",$add_fullpath_str) Func _FopenDlgStr($inpath, $infilter, $inparam) Local $open_dlg=FileOpenDialog("Open:", $inpath, $infilter, $inparam) If @error Then MsgBox(16,"Error:","Не выбрано ни одного файла!") Return 0 Else $expdir_arr=_StringExplode($open_dlg, "|", 1) $expdir_arr[0]=$expdir_arr[0]&"\" If UBound($expdir_arr) > 1 Then $begin_dir_add=$expdir_arr[0]&$expdir_arr[1] $result_str=StringReplace($begin_dir_add, "|", "|"&$expdir_arr[0]) Else $result_str=$open_dlg EndIf Return $result_str EndIf EndFunc |
Отправлено: 19:00, 01-02-2010 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] FileOpenDialog с заданым видом отображения файлов | cra5h_ | AutoIt | 2 | 01-02-2010 17:45 | |
CMD/BAT - [решено] Как исключить обработку одного exe-файла из пакетной обработки нескольких файлов? | Nun-Nun | Скриптовые языки администрирования Windows | 2 | 14-05-2009 12:16 | |
Домашний сервер. Советы + помощь в выборе нескольких комплектующих | aqua sky | Выбор отдельных компонентов компьютера и конфигурации в целом | 2 | 19-12-2008 18:27 | |
Ошибка при динамической регистрации или удалении одной или нескольких записей DNS | fesenus | Microsoft Windows NT/2000/2003 | 3 | 19-11-2007 11:36 | |
При загрузке нескольких конф. с одного фаил-сервера в сети - ошибка доступа | ChukotMan | Microsoft Windows 2000/XP | 2 | 11-07-2006 18:39 |
|