Что нового

Название файла

Статус
Закрыто для дальнейших ответов.

bulldog5293

Знающий
Сообщения
172
Репутация
10
Можно ли средствами AutoIT не прописывать в скрипте названия файла, а получать его из input\edit?
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
bulldog5293
Можно... Например, вот так:

Код:
; НАЧАЛО

 $GUI=GUICreate("",300,60)
 $INPUT=GUICtrlCreateInput("",0,0,300,25)
 $BUTTON=GUICtrlCreateButton("Ok",0,30,300,25)

 GUISetState()

 while true

  switch GUIGetMsg()
   case -3
    exitloop
   case $BUTTON
    $NAME=GUICtrlRead($INPUT)
    MsgBox(0,"",$NAME)
    $FILE=FileOpen(@ScriptDir&"\"&$NAME,0)
    If $FILE=-1 Then MsgBox(0,"","Файл не существует")
  endswitch

 wend

; КОНЕЦ
 
Автор
B

bulldog5293

Знающий
Сообщения
172
Репутация
10
Пример хороший snoitaleR, нор вопрос осьаётся. Можно ли средствами AutoIT не прописывать в скрипте названия файла, а получать его из input\edit?Точнее из input\edit создать файл, к примеру piter.txt, если в input\edit было прописанно piter
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
bulldog5293
Можно указать только имя, тогда расширение будет неизменным, например, TXT...
Меняем только одну строчку...

Код:
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",0)
 
Автор
B

bulldog5293

Знающий
Сообщения
172
Репутация
10
snoitaleR там не
Код:
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",0)

а
Код:
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",0)

ставить нада, а то не создаться, спс за пример:smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
bulldog5293
не вижу разницы в двух твоих строках. ты наверное имел в виду во второй строке флаг 2, а не 0. а вообще, чтобы просто создать файл без не рекомендуется открывать его. лучше записать его без предварительного открытия в файл пустой строки. тогда в файл ничего не запишется, но зато если его не было то создастся.
Код:
FileWrite(@ScriptDir&"\"$NAME&".TXT", "")
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
bulldog5293 [?]
Можно ли средствами AutoIT не прописывать в скрипте названия файла, а получать его из input\edit?
Встречный вопрос - Для чего нужен input? Для того чтоб прочитать от пользователя любые введённые данные. Может ли имя файла быть введённым? Конечно.
Едем дальше. Вопрос звучит "не прописывать", здесь самым удобным будет операция drag-and-drop.
Код:
#include <GUIConstants.au3>
#include <WindowsConstants.au3> 

$Gui = GUICreate("Проверка drag-and-drop",  420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES) ; стиль drag-and-drop, (0x00000010)

$CatchDrop = GUICtrlCreateLabel("", 0, 0, 420, 40) ; создаём область Label, первым элементом, чтоб не перекрывать остальные, размер можно указать на всё окно
GUICtrlSetState(-1, $GUI_DISABLE + $GUI_DROPACCEPTED) ; устанавливаем параметры области - скрытая и drag-and-drop (128+8)

GUICtrlCreateLabel ("используйте drag-and-drop", 120,3,200,18)

$Label1 = GUICtrlCreateLabel("Путь 1", 24, 40, 186, 17)
$Input1 = GUICtrlCreateInput("", 24, 57, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder1 = GUICtrlCreateButton("Обзор...", 344, 56, 57, 23)

$Label2 = GUICtrlCreateLabel("Путь 2", 24, 90, 186, 17)
$Input2 = GUICtrlCreateInput("", 24, 107, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder2 = GUICtrlCreateButton("Обзор...", 344, 106, 57, 23)

$Label3 = GUICtrlCreateLabel("Путь 3", 24, 140, 186, 17)
$Input3 = GUICtrlCreateInput("", 24, 157, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder3 = GUICtrlCreateButton("Обзор...", 344, 156, 57, 23)

GUISetState ()

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg =  $GUI_EVENT_DROPPED  ;событие приходящееся на drag-and-drop (-13)
				If @GUI_DropID=$Input1 Then GUICtrlSetData($Input1, @GUI_DRAGFILE)
				If @GUI_DropID=$Input2 Then GUICtrlSetData($Input2, @GUI_DRAGFILE)
				If @GUI_DropID=$Input3 Then GUICtrlSetData($Input3, @GUI_DRAGFILE)
				If @GUI_DropID=$CatchDrop Then MsgBox(0,"В область drag-and-drop попал файл", @GUI_DRAGFILE)
				; кнопки обзор
			Case $msg = $folder1
				$folder01 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4 )
				If @error Then ContinueLoop
				GUICtrlSetData($Input1, $folder01)
			Case $msg = $folder2
				$folder02 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4 )
				If @error Then ContinueLoop
				GUICtrlSetData($Input2, $folder01)
			Case $msg = $folder3
				$folder03 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4 )
				If @error Then ContinueLoop
				GUICtrlSetData($Input3, $folder01)
			Case $msg = $GUI_EVENT_CLOSE ; закрыть (-3)
				Exit
		EndSelect
	WEnd

#cs
Событие $GUI_EVENT_DROPPED можно удалить, но теряется универсальность. Если открыть путь кнопкой "Обзор..." и далее кинуть файл в Input, то пути складываются в одну строку последовательно. Именно $GUI_EVENT_DROPPED устраняет эту проблему установкой пути с помощью GUICtrlSetData.
#ce

позволяющет просто кидать файл в инпут.
Ну и третий положительный момент: создать условие: если последние 4 символа не являются .reg тогда дописать .reg, то есть дописать к имени расширение файла. Обычно это в диалоге FileSaveDialog.
 
Автор
B

bulldog5293

Знающий
Сообщения
172
Репутация
10
Kaster
не вижу разницы в двух твоих строках. ты наверное имел в виду во второй строке флаг 2, а не 0. а вообще, чтобы просто создать файл без не рекомендуется открывать его. лучше записать его без предварительного открытия в файл пустой строки. тогда в файл ничего не запишется, но зато если его не было то создастся.
Я сонным был, там
Код:
$FILE=FileOpen(@ScriptDir&"\"&$NAME&".TXT",1)

Потому что при чтение у меня файл не создаётся, в принцепе там и 2 можно поставить, главное не на чтение
AZJIO
Встречный вопрос - Для чего нужен input? Для того чтоб прочитать от пользователя любые введённые данные. Может ли имя файла быть введённым? Конечно.
Едем дальше. Вопрос звучит "не прописывать", здесь самым удобным будет операция drag-and-drop.
drag-and-drop не вариант потому что, если файла нет с таким именем то его и нада создать. AutoIT не потдерживает много поточность, а если прога к многим сайтам обращаться будет, то из одного txt файла услажняется получение адресса для неё, поэтому на мой взгляд логичнее получать адрес и параметры из определённого txt файла
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
bulldog5293, я даю тебе предупреждение (пока устное) за твои "правильные" вопросы. Я просмотрел последние несколько созданных тобой тем и практически после 2-3 ответа эти темы можно считать решенными (в рамках заданного вопроса). Все, что идет дальше, это чистой воды OffTop и запутывание других участников форума. Здесь аналогичная ситуация. snoitaleR в первом же посте дал тебе исчерпывающий ответ на поставленный вопрос, и все последующие твои вопросы здесь никчему, это все нужно было написать при создании темы или отредактировать ее после. Это форум, а не чат, поэтому задавай вопросы корректнее, более детально описывай то, что ты хочешь получить и т.д., что бы другим пользователям форума была сразу понятна суть проблемы. В конце концов люди пишут для тебя какой-никакой код, а он (код) в результате оказывается никому не нужный, т.к. ты что-то недоговорил... Надеюсь ты меня правильно понял.

Тема закрыта.

:ninja:
 
Статус
Закрыто для дальнейших ответов.
Верх