Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Скрипт создания файла данных через диологовое окно. как?

Ответить
Настройки темы
[решено] Скрипт создания файла данных через диологовое окно. как?

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Помогите создать скрипт который бы создовал файл с расширением exp (обычный текстовый файл только с переименованным расширением). При этом нужно чтобы в файл вносились данные по определенному алгоритму.
Пример файла который нужно получить:

Код: Выделить весь код
[mm]p9=128
[mm]p10=133
[mm]p11=137
[mm]p12=25
[mm]p13=65
[mm]p14=60
[mm]p15=8
[mm]p16=89
[mm]p17=17
и так далее...

При запуске скрипта должно выскачить окно в котором можно ввести данные. Пример окна:

Код: Выделить весь код
Диаметр окружности впадин зубьев, df             128
Делительный диаметр, d                           133
Диаметр окружности вершин зубьев, da             137
Ширина, b                                        25
Диаметр ступицы, dst                             65
Длина ступицы, Lst                               60
Толщина венца, hv                                8
Диаметр расположения отверстий, dro              89
Диаметр отверстий, do                            17
То что текстом - это пояснения, а для цифр должно быть поле для их ввода. При этом каждой фразе пояснения должно автоматически подставлятся [mm]p17=. Но не по порядку как в примере. Фраза в скобках и цифра после p может быть любая, заранее мною определенная для каждой фразы пояснения. После того как все данные введены нажимаем OK и должен получится нужный файл.

Отправлено: 20:50, 21-12-2009

 

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <GUIConstantsEx.au3>
$hWrite = FileOpen(@ScriptDir & '\file.ext', 2)
$hGUI = GUICreate('I''m a crasy dentist', 300, 300)
$hButton = GUICtrlCreateButton('Create file', 10, 260, 70, 30)
Local $hLabel[9][2], $sLabel[9], $hInput[9]
$sLabel[0] = 'Диаметр окружности впадин зубьев, df'
$sLabel[1] = 'Делительный диаметр, d'
$sLabel[2] = 'Диаметр окружности вершин зубьев, da'
$sLabel[3] = 'Ширина, b'
$sLabel[4] = 'Диаметр ступицы, dst'
$sLabel[5] = 'Длина ступицы, Lst'
$sLabel[6] = 'Толщина венца, hv'
$sLabel[7] = 'Диаметр расположения отверстий, dro'
$sLabel[8] = 'Диаметр отверстий, do'

$hLabel[0][1] = '[mm]p9='
$hLabel[1][1] = '[mm]p10='
$hLabel[2][1] = '[mm]p11='
$hLabel[3][1] = '[mm]p12='
$hLabel[4][1] = '[mm]p13='
$hLabel[5][1] = '[mm]p14='
$hLabel[6][1] = '[mm]p15='
$hLabel[7][1] = '[mm]p16='
$hLabel[8][1] = '[mm]p17='

For $i = 0 to 8
    $hLabel[$i][0] = GUICtrlCreateLabel($sLabel[$i], 10, 10 + $i * 28, 180, 15)
    $hInput[$i] = GUICtrlCreateInput($i, 230, 10 + $i * 28, 50, 15)
Next
GUISetState()
While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            GUIDelete($hGUI)
            ExitLoop
        Case $hButton
            For $i = 0 to 8
                FileWriteLine($hWrite, $hLabel[$i][1] & GUICtrlRead($hInput[$i]))
            Next
            FileClose($hWrite)
    EndSwitch
WEnd

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:58, 21-12-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


kaster, а можно чтобы скрипт отслеживал введенные значения по полученному файлу?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 23:32, 21-12-2009 | #3


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


в чем проявляется слежение? и какой вид имеет полученный файл?

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 23:45, 21-12-2009 | #4


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Цитата kaster:
какой вид имеет полученный файл? »
полученный файл имеет вид как нужно. Все работает ок. Объясню подробнее. вот допустим я ввел данные. Когда в следующий раз запущу скрипт то в ячейках будут цифры по умолчанию. А хотелось бы чтоб цифры там были из последнего сеанса запуска, тобишь из файла file.ext

и зашитые по умолчанию цифры 1 2 3 4 5 ... как поменять на нужные не понял я что то

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 23:48, 21-12-2009 | #5


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


а. понял. последние введенные данные.
а выходной файл может иметь вид следующий?
Код: Выделить весь код
[settings]
[mm]p9=128
[mm]p10=133
[mm]p11=137
[mm]p12=25
[mm]p13=65
[mm]p14=60
[mm]p15=8
[mm]p16=89
[mm]p17=17
ну или любое другое значение вместо [settings]? просто в таком случае это получится ini файл для парсинга которого есть встроенные средства. в противном случае есть два варианта
1. длинный, и не совсем понятный для тебя судя по вопросам, код
2. создание вспомогательного файла, который будет практически дублировать file.ext но с заголовком [settings]

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 00:09, 22-12-2009 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('I''m a crasy dentist', 300, 300)
$hButton = GUICtrlCreateButton('Create file', 10, 260, 70, 30)

Local $hLabel[9][2], $sLabel[9], $hInput[9]
$sLabel[0] = 'Диаметр окружности впадин зубьев, df'
$sLabel[1] = 'Делительный диаметр, d'
$sLabel[2] = 'Диаметр окружности вершин зубьев, da'
$sLabel[3] = 'Ширина, b'
$sLabel[4] = 'Диаметр ступицы, dst'
$sLabel[5] = 'Длина ступицы, Lst'
$sLabel[6] = 'Толщина венца, hv'
$sLabel[7] = 'Диаметр расположения отверстий, dro'
$sLabel[8] = 'Диаметр отверстий, do'

$hLabel[0][1] = '[mm]p9='
$hLabel[1][1] = '[mm]p10='
$hLabel[2][1] = '[mm]p11='
$hLabel[3][1] = '[mm]p12='
$hLabel[4][1] = '[mm]p13='
$hLabel[5][1] = '[mm]p14='
$hLabel[6][1] = '[mm]p15='
$hLabel[7][1] = '[mm]p16='
$hLabel[8][1] = '[mm]p17='

For $i = 0 To 8
    $sInput_Val = StringRegExpReplace(FileReadLine(@ScriptDir & '\file.ext', $i + 1), "^.*=(.*)$", "\1")
    If $sInput_Val = "" Then $sInput_Val = $i

    $hLabel[$i][0] = GUICtrlCreateLabel($sLabel[$i], 10, 10 + $i * 28, 180, 15)
    $hInput[$i] = GUICtrlCreateInput($sInput_Val, 230, 10 + $i * 28, 50, 17, $ES_NUMBER)
Next

GUISetState()

While 1
    $Msg = GUIGetMsg()

    Switch $Msg
        Case $GUI_EVENT_CLOSE
            GUIDelete($hGUI)
            ExitLoop
        Case $hButton
            $hWrite = FileOpen(@ScriptDir & '\file.ext', 2)

            For $i = 0 To 8
                FileWriteLine($hWrite, $hLabel[$i][1] & GUICtrlRead($hInput[$i]))
            Next

            FileClose($hWrite)
    EndSwitch
WEnd

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:18, 22-12-2009 | #7


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Цитата kaster:
а выходной файл может иметь вид следующий? »
не, не может. прога ругается на данную строку, или любую другую. Ошибка вроде не критическая, но рисковать мне нельзя (запороть проект 3D не хочу).
Цитата kaster:
длинный, и не совсем понятный для тебя судя по вопросам, код »
если есть лишнее время то можете предложить, но наверное лучше
Цитата kaster:
создание вспомогательного файла, который будет практически дублировать file.ext но с заголовком [settings] »
и пусть скрипт делает его сразу же скрытым чтобы на глазах не моячил

kaster, Вас опередили. Creat0R, все работает как нельзя лучше. Если мне нужно увеличить количество параметров то я меняю:

Код: Выделить весь код
$sLabel[9] = 'Диаметр отверстий, do'
.....
Код: Выделить весь код
$hLabel[9][1] = '[mm]p17='
....
Код: Выделить весь код
For $i = 0 To 9
Код: Выделить весь код
For $i = 0 To 9
Код: Выделить весь код
Local $hLabel[10][2], $sLabel[10], $hInput[10]


Верно?

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 00:18, 22-12-2009 | #8


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Pozia:
Верно? »
Да. Но я бы для удобства сделал так:

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>

$hGUI = GUICreate('I''m a crasy dentist', 300, 350)
$hButton = GUICtrlCreateButton('Create file', 10, 310, 70, 30)

Global $aLabels, $aInput_Vals, $aiInputs, $iCount

$aLabels &= 'Диаметр окружности впадин зубьев, df|'
$aLabels &= 'Делительный диаметр, d|'
$aLabels &= 'Диаметр окружности вершин зубьев, da|'
$aLabels &= 'Ширина, b|'
$aLabels &= 'Диаметр ступицы, dst|'
$aLabels &= 'Длина ступицы, Lst|'
$aLabels &= 'Толщина венца, hv|'
$aLabels &= 'Диаметр расположения отверстий, dro|'
$aLabels &= 'Диаметр отверстий, do|'

$aInput_Vals &= '[mm]p9=|'
$aInput_Vals &= '[mm]p10=|'
$aInput_Vals &= '[mm]p11=|'
$aInput_Vals &= '[mm]p12=|'
$aInput_Vals &= '[mm]p13=|'
$aInput_Vals &= '[mm]p14=|'
$aInput_Vals &= '[mm]p15=|'
$aInput_Vals &= '[mm]p16=|'
$aInput_Vals &= '[mm]p17=|'

$aLabels = StringRegExpReplace($aLabels, '\|$', '')
$aLabels = StringSplit($aLabels, '|')

$aInput_Vals = StringRegExpReplace($aInput_Vals, '\|$', '')
$aInput_Vals = StringSplit($aInput_Vals, '|')

Dim $iCount = $aInput_Vals[0]
Dim $aiInputs[$iCount+1]

For $i = 1 To $iCount
    $sVal = StringRegExpReplace(FileReadLine(@ScriptDir & '\file.ext', $i), "^.*=(.*)$", "\1")
    If $sVal = "" Then $sVal = $i

    GUICtrlCreateLabel($aLabels[$i], 10, 10 + ($i-1) * 28, 180, 15)
    $aiInputs[$i] = GUICtrlCreateInput($sVal, 230, 10 + ($i-1) * 28, 50, 17, $ES_NUMBER)
Next

GUISetState()

While 1
    $Msg = GUIGetMsg()

    Switch $Msg
        Case $GUI_EVENT_CLOSE
            GUIDelete($hGUI)
            ExitLoop
        Case $hButton
            $hWrite = FileOpen(@ScriptDir & '\file.ext', 2)

            For $i = 1 To $iCount
                FileWriteLine($hWrite, $aInput_Vals[$i] & GUICtrlRead($aiInputs[$i]))
            Next

            FileClose($hWrite)
    EndSwitch
WEnd
Добавлять так:

Код: Выделить весь код
$aLabels &= 'Диаметр отверстий, do|'
...
Код: Выделить весь код
$aInput_Vals &= '[mm]p17=|'
...

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:46, 22-12-2009 | #9


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Цитата Pozia:
Верно? »
да. надо переобъявить массивы и изменить верхний предел циклов

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 00:48, 22-12-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Скрипт создания файла данных через диологовое окно. как?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Как вызвать диалоговое окно открытия файла? jaki Скриптовые языки администрирования Windows 4 30-03-2011 12:12
[решено] Как написать скрипт о проверке нужного файла на съемном носителе? Pozia AutoIt 12 05-03-2009 20:20
Интернет - Диалоговое окно загрузки файла IE убрать через реестр... 12usver12 Microsoft Windows 2000/XP 6 26-05-2008 15:41
Как остановить скрипт, пока юзер не закроет всплывающее окно? Gamover jr Вебмастеру 5 16-04-2008 20:08
Как взять дату создания файла из перла? radioamator Вебмастеру 2 30-04-2004 11:14




 
Переход