Что нового

FileOpenDialog проверка выбраны ли файлы и запись путей выбранных файлов через ;

Tiberium6

Новичок
Сообщения
51
Репутация
0
Код:
$FilePath1 = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)" )
$FilePath2 = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)" )
$FilePath3 = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)" )
$FilePath4 = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)" )


вообщем человек выбирает файлы для отправки, например $FilePath3,$FilePath4 имеет путь а $FilePath1,$FilePath2 нет... нужно что бы проверялось выбран ли файл или нет, и записывал вот так
Код:
$f = $FilePath3 & ";" & $FilePath4
или
Код:
$f = $FilePath1 & ";" & $FilePath4
или
Код:
$f = $FilePath1 & ";" & $FilePath2 & ";" & $f = $FilePath3 & ";" & $FilePath4
в зависимости от того где выбран файл. смысл получается в том что где выбраны файлы нужно пути к файлам разделить ;
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tiberium6 [?]
где выбраны файлы нужно пути к файлам разделить ;
Код:
Dim $FilePath[4], $SendStr = ""
$FilePath[0] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
$FilePath[1] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
$FilePath[2] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
$FilePath[3] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
For $i=0 To 3
  If $FilePath[$i] <> "" Then $SendStr &= $FilePath[$i] & ";"
Next
If $SendStr <> "" Then $SendStr = StringTrimRight($SendStr, 1)
ConsoleWrite($SendStr & @CRLF)
 
Автор
T

Tiberium6

Новичок
Сообщения
51
Репутация
0
Код:
case $Button2
$FilePath1 = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 4)
,а возможно сделать так, чтобы не 4 строчки, а например выбирают разные файлы nn-ое количество, и что бы запись такая же была как тут через; ?
Код:
Dim $FilePath[4], $SendStr = ""
$FilePath[0] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
$FilePath[1] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
$FilePath[2] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
$FilePath[3] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
For $i=0 To 3
  If $FilePath[$i] <> "" Then $SendStr &= $FilePath[$i] & ";"
Next
If $SendStr <> "" Then $SendStr = StringTrimRight($SendStr, 1)
ConsoleWrite($SendStr & @CRLF)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Tiberium6 [?]
сделать так, чтобы не 4 строчки, а например выбирают разные файлы nn-ое количество
Через цикл:

Код:
Dim $iCount = 5, $sSendStr = ""

For $i = 1 To $iCount
	$sFile = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
	
	If Not @error Then
		$sSendStr &= $sFile
		
		If $i < $iCount Then
			$sSendStr &= ";"
		EndIf
	EndIf
Next

ConsoleWrite($sSendStr & @CRLF)


Только не понятно зачем это нужно, можно же один раз вывести диалог и дать пользователю возможность выбрать несколько файлов.
 
Автор
T

Tiberium6

Новичок
Сообщения
51
Репутация
0
ну мне для почтовика надо (потом тему с описание выложу), что бы выбрать несколько файлов и отправить... и кстати он же пять раз подряд показывает что выбрать... а мне нужно что бы нажал кнопку выбрал файл нажал еще раз выбрал другой файл и т.д. а потом отправить, а отправляет по полному пути к файлу (файлам)разделенным ;
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Tiberium6 [?]
нужно что бы нажал кнопку выбрал файл нажал еще раз выбрал другой файл
Так а в чём проблема, пусть некая глобальная переменная накапливается после каждого удачного выбора файла.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tiberium6 [?]
нужно что бы нажал кнопку выбрал файл нажал еще раз выбрал другой файл и т.д.
Код:
Dim $FilePath[4], $SendStr = "", $i = 0, $count = 4

GUICreate("test", 150, 100)
$add = GUICtrlCreateButton("Добавить", 5, 5, 140, 90)
GUISetState()

Do
  $msg = GUIGetMsg()
  Select
    Case $msg = $add
      $FilePath[$i] = FileOpenDialog("ВЫБЕРИТЕ ФАЙЛ ДЛЯ ОТПРАВКИ", "Z:", "All (*.*)", 3)
      $i += 1
      If $i = $count Then
        CreateStr()
        If $SendStr = "" Then
          MsgBox(0, "Test", "Файлы не выбраны")
        Else
          MsgBox(0, "Test", $SendStr)
        EndIf
        Exit
      EndIf
  EndSelect
Until $msg = -3

Func CreateStr()
  For $i=0 To $count-1
    If $FilePath[$i] <> "" Then $SendStr &= $FilePath[$i] & ";"
  Next
  $SendStr = StringTrimRight($SendStr, 1)
EndFunc
 

vladimir_dfx

Новичок
Сообщения
6
Репутация
0
ребят, хелп. может не совсем по адресу, но пишу скрипт для работы с файлами с помощью функции FileOpenDialog, так вот, возник затык, при выборе одного файла, все хоршо, он копируется куда надо, но стоит выбрать несколько файлов в диалоге, то ничего не происходит. Не знаю как решить задачку, через какой цикл или с помощью массива? подскажите

Код:
Func OPNDLG() ; если шара не подключилась, открываю выбор вручную
$sFilePath = FileOpenDialog('Нет подключения к шаре, покажи где файлы', '\', "(*.ndk;*.nsf;*.id)" ,4) ; 
If @error Then
    MsgBox(4096, "", "Не выбрано ни одного файла") 
Else
	FileCopy($sFilePath, @DesktopDir)
EndIf
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
Local $fod = FileOpenDialog('', '', '(*.*)', 7)
If @error Then
	MsgBox(16, '', 'Не выбрано ни одного файла')
Else
	Local $stin = StringInStr($fod, '|')
	Local $gtp = StringLeft($fod, $stin - 1)
	Local $aPtfl = StringSplit($fod, '|', 3)
	For $i = 1 To UBound($aPtfl) - 1
		ConsoleWrite($gtp & '\' & $aPtfl[$i] & @CRLF)
;Вместо записи в консоль используй функцию копирования файлов
	Next
EndIf
 

vladimir_dfx

Новичок
Сообщения
6
Репутация
0
Ух ты, интересно получается, спасибо, суть уловил, но добавив
Код:
FileCopy($gtp, @DesktopDir & $aPtfl[$i])
Вместо записи в консоль, ничего не происходит, но и ошибок нет, что я мог пропустить? :stars:

Все, разобрался, я пропустил кое что
Код:
FileCopy($gtp, @DesktopDir & '\' & $aPtfl[$i])
вот так работает!

а что такое флаг 7 в OPD? если не секрет
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
сумма флагов. смотри справку
 
Верх