Русское сообщество AutoIt

  • Май 20, 2012, 11:48:02 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

Создана конференция в Jabber'е для обсуждения мелких вопросов касающихся AutoIt.

Всем у кого есть джаббер-клиент, могут присоединиться к конференции по адресу xmpp:autoit@conference.jabber.ru

Комната/Конференция/Чат не призвана заменить этот форум, а лишь для ускорения получения ответов на элементарные и короткие вопросы, которые возможно не требуют создания специальной темы на данном форуме. Для всех остальных, сколь-нибудь сложных и комплексных проблем - исключительно на форум. Комната является постоянной, но при заходе у пользователя будет отсутствовать право писать в общий чат.

Тема на форуме.

Реклама

Автор Тема: [Автоматизация] Нужен инструмент для переименования переменных и функций  (Прочитано 1891 раз)

0 Пользователей и 2 Гостей смотрят эту тему.

AZJIO [?]

Версия AutoIt: 3.3.0.0

Описание: Нужен инструмент для переименования переменных и функций.
Эта задача возможно будет интересна для создателей скриптов.
Цель скрипта:
1. Просмотр существующих переменных и функций
2. Переименование с целью улучшения читаемости скрипта или сокращения количества символов в переменной до одного для компакности скрипта.
3. Переименование связанное с обьединением скриптов, проверка, что переменные в скриптах не пересекаются и часть кода можно добавлять из одного скрипта в другой.

Примечания:
С темой получения списка функций ознакомился, а до этого сам попробовал получить список:
Код: AutoIt [Выделить]
;  @AZJIO
;скрипт предназначен для просмотра переменных и функций в скриптах на предмет пересечения, для возможности безбоязненно копировать часть кода одного скрипта в другой. Также позволяет визуально отследить что при выполнении замены имени переменной не произойдёт порча близкой по имени переменной, например $Path и $PathName. При замене $Path испортится $PathName, поэтому можно временно переименовать сначала $PathName, а потом $Path и далее восстановить $PathName. Переменные читаются из скрипта в одном экзэмпляре. Окно поддерживает drag-and-drop, и изменение размера окна.Счётчик времени показывает время обработки для таких библиотек вункций как WinAPIEx.au3, GDIP.au3.
#Include<Array.au3>
$bufer_read = 0 ; если 1 то читаем из буфера, если 0 то диалог выбора файла
$bufer_write = 1 ; если 1 то результат в буфер, если 0 то сохраняем в файл file_0.au3 в каталоге конвертора
Global $kol, $text01, $text02, $text0, $text, $Info_Edit1, $Info_Edit2, $Time, $timer

If $CmdLine[0]=0 Then
    If $bufer_read = 1 Then
        $text = ClipGet()
    Else
        $Path = FileOpenDialog("Выбор файла.", @WorkingDir & "", "Скрипт (*.au3)", 1 + 4)
        $file = FileOpen($Path, 0)
        $text = FileRead($file)
        FileClose($file)
    EndIf
Else
    If FileExists($CmdLine[1]) Then
        $file = FileOpen($CmdLine[1], 0)
        $text = FileRead($file)
        FileClose($file)
    EndIf
EndIf

_ReadAU3($text)

If $kol = 0 Then
    MsgBox(0, "Сообщение", 'Нет переменных')
    Exit
EndIf
If $kol < 20 Then
    $pos = $kol
Else
    $pos = 20
EndIf


$Main_Gui = GUICreate("Переменные и функции", 390, $pos * 17 + 120, -1, -1, 786432, 0x00000010)
$CatchDrop = GUICtrlCreateLabel("", 0, 0, 390, $pos * 17 + 120)
GUICtrlSetState(-1, 128 + 8)
$Info_Edit1 = GUICtrlCreateEdit($text01, 8, 10, 180, $pos * 17 + 40)
GUICtrlSetResizing(-1, 1)
$Info_Edit2 = GUICtrlCreateEdit($text02, 198, 10, 180, $pos * 17 + 40)
GUICtrlSetResizing(-1, 1)
$Time = GUICtrlCreateLabel('', 8, $pos * 17 + 60, 120, 17)
GUICtrlSetResizing(-1, 1)
GUICtrlSetData($Time, 'Выполнено за '&Round($timer/1000, 1)&' сек')
GUICtrlCreateLabel('Используйте drag-and-drop', 138, $pos * 17 + 60, 190, 17)
GUICtrlSetResizing(-1, 1)

GUISetState()
Send('^{HOME}')

While 1
    Sleep(10)
    $msg = GUIGetMsg()
    Select
        Case $msg = -13
            $file = FileOpen(@GUI_DragFile, 0)
            $text = FileRead($file)
            FileClose($file)
            _ReadAU3($text)
        Case $msg = -3
            Exit
    EndSelect
WEnd
;=====================================

If $bufer_write = 1 Then
    ClipPut($text)
Else
    $filetxt = @ScriptDir & '\file_'
    $i = 0
    While FileExists($filetxt & $i & '.au3')
        $i = $i + 1
    WEnd
    $filetxt = $filetxt & $i & '.au3'

    $file = FileOpen($filetxt, 2)
    FileWrite($file, $text)
    FileClose($file)
EndIf


Func _ReadAU3($text)
    $timer = TimerInit() ; засекаем время
    $text0 = $text
    ; начинаем поиск переменных
    $aText1 = StringRegExp($text & @CRLF, '\$\w+', 3) ; детектируем переменные в массив
    _ArraySort($aText1) ; сортировка массива

    $text = ''
    For $i = 0 To UBound($aText1) - 1 ; объединение массива в многостроковый текст
        $text &= $aText1[$i] & @CRLF
    Next

    $textZ = ''
    For $i = 0 To UBound($aText1) - 1
        If StringRegExp($textZ & @CRLF, StringReplace($aText1[$i], "$", "\$") & @CRLF, 0) Then ContinueLoop
        $text = StringRegExpReplace($text, StringReplace($aText1[$i], "$", "\$") & @CRLF, @CRLF)
        ; $text = StringRegExpReplace($text, '\'&$aText1[$i] & @CRLF, @CRLF) ; блин, строка медленней
        If @extended > 0 Then $textZ &= @CRLF & $aText1[$i] ; добавляем удалённые переменные в конец списка, такой сбособ исключит повтора переменных в списке $text
    Next
    $text&=$textZ
    $text = StringRegExpReplace($text, '(\n\r){100}', '') ;удаление по 100 пустых строк, иначе при большом количестве, как в WinAPIEx.au3 скрипт вылетает.
    $text = StringRegExpReplace($text, '(\n\r)+', '') ;удаление пустых строк
    $text01 = StringRegExpReplace($text, "\$", "$")
    ; конец поиск переменных
    $kol = @extended
    GUICtrlSetData($Info_Edit1, $text01)

    ; начинаем поиск функций
    $aText2 = StringRegExp($text0, '(?<=\sFunc)\s+(\w*)', 3) ; детектируем функции в массив
    _ArraySort($aText2) ; сортировка массива

    $text = ''
    For $i = 0 To UBound($aText2) - 1 ; объединение массива в многостроковый текст
        $text &= $aText2[$i] & @CRLF
    Next
    $text = StringRegExpReplace($text, '(\n\r){40}', '')
    $text02 = StringRegExpReplace($text, '(\r\n){2,}', @CRLF) ;удаление пустых строк
    ; конец поиск функций
    GUICtrlSetData($Info_Edit2, $text02)
    $timer=TimerDiff($timer)
    GUICtrlSetData($Time, 'Выполнено за '&Round($timer/1000, 1)&' сек')
EndFunc   ;==>_ReadAU3

Немогу найти ссылку на тему с поддержкой редактирования итемов GUICtrlCreateListView, если это всё объединить то скрипт создать возможно.
« Последнее редактирование: Октябрь 24, 2010, 15:40:42 от AZJIO »



  Записан
Вытащи сначала бревно из своего глаза, тогда поймёшь как вытащить сучёк из глаза брата своего.

Yashied [?]

  • Глобальный модератор
  • AutoIt MVP
  • *
  • *****
  • Репутация: 1905
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 3967
  • Версия AutoIt: 3+
    • Награды
Этот инструмент уже есть, называется SciTE (полная версия) со всеми его дополнениями.




  Записан
Думай, прежде чем говорить.

AZJIO [?]

Ну кто бы выложил тогда полную версию со всеми дополнениями.


OffTopicя в шоке... надо было несколько месяцев заниматься автоитом чтоб узнать о специальном дистрибутиве SciTE с дополнениями, и хоть бы кто словом обмолвился, когда на руборде спрашивал о том в каких каталогах должны лежать дополнительные скачанные утилиты, по крохам нагугленные, а тут оказывается полный комплект всего с таким удобным поиском по справке, с прописанными в Tools всеми утилитами и выполняющими свои функции прямо в SciTE. В общем нет слов... напишите на главной странице красными букавами Скачать SciTE4AutoIt3.exe

Хотя промотр переменных и функций с переименованием пока не нашёл.
« Последнее редактирование: Апрель 27, 2010, 01:57:30 от AZJIO »



  Записан

Yashied [?]

  • Глобальный модератор
  • AutoIt MVP
  • *
  • *****
  • Репутация: 1905
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 3967
  • Версия AutoIt: 3+
    • Награды
AZJIO  [?]
Цитата
Хотя промотр переменных и функций с переименованием пока не нашёл.

:)

Ctrl+H




  Записан

AZJIO [?]

Yashied
Я это и сам знаю... У меня скрипт содержит 30 переменных, причём с вариантами  $reg1, $reg112, $reg12. Если я выполню замену $reg1, то и остальные изменятся, и даже напутаются. Нужно контролировать процесс скурпулёзно. А я утилитой хотел добится именно замены, используя регулярные выражения, при котором будут переименовываться только указанные.




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
AZJIO  [?]
Цитата
Если я выполню замену $reg1, то и остальные изменятся
В поиске и замене есть функция поиска с RegExp.




  Записан
Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.



«Не оказываю техподдержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

AZJIO [?]

CreatoR
Тогда подскажи, где та тема в которой обсуждалось редактирование итемов GUICtrlCreateListViewItem непосредственно в окне, не мог найти.

Цитата
В поиске и замене есть функция поиска с RegExp.
как бы я же это понимаю, как бы я уже немало скриптов сделал используя поиск-замену, всё упирается лишь в свободное время.




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
AZJIO  [?]
Цитата
где та тема в которой обсуждалось редактирование итемов GUICtrlCreateListViewItem непосредственно в окне, не мог найти
Поиск не работает? :laugh:
вот.


Добавлено: Май 28, 2010, 23:13:58
AZJIO  [?]
Цитата
всё упирается лишь в свободное время
Не уверен что понимаю, но там довольно просто и быстро осуществить поиск и замену по регулярным выражениям, единственное(?) ограничение, это однострочный поиск.




  Записан

AZJIO [?]

CreatoR
Цитата
Не уверен что понимаю, но там довольно просто и быстро осуществить поиск и замену по регулярным выражениям
Поиск сделать не трудно, трудно придумать управление в окне, удобство интерфейса.

Цитата
Поиск не работает?
я на этом форуме тему видел, не могу найти. Конкретно задан был в теме вопрос типа "Можно ли редактировать имена ListViewItem в самом окне", твой ответ "да можно" и пример редактирования. Я пытаюсь его найти и попробовать использовать в своём скрипте. Нужно именно редактировав итем и по нажатию Enter прочитать старое и новое имя и выполнить поиск-замену в срипте. Любые другие варианты не удобнее чем скопировать переменную и по Ctrl+H выполнить замену.


Твой пример на autoitscript.com вылетает  на $WM_NOTIFY в 15 строке. А тот что был на этом форуме работал.

Разобрался...
« Последнее редактирование: Май 29, 2010, 00:07:34 от AZJIO »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
AZJIO  [?]
Цитата
на этом форуме тему видел, не могу найти
От меня такой темы небыло, а если не от меня, то это классический пример того, насколько может быть полезным название темы ;) - тот кто создал ту тему, явно не заботился об информативности, ну или мой пример небыл связан напрямую с темой.


Добавлено: Май 29, 2010, 00:51:18
P.S
Всё что я смог найти от меня, это ответ в тему [Элементы GUI] Создание GUICtrlCreateListView с элементом GUICtrlCreateDate, но там ссылка на архив с примером с оф. форума, я только указал на пример для вытаскивания с него нужного механизма.




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
Au3ToPost - Инструмент для расскраски AutoIt-кода
Инструменты и помощь по AutoIt
CreatoR 58 9138 Последний ответ Ноябрь 01, 2011, 16:20:10
от madmasles
[Автоматизация] Запуск нескольких функций по одному HotKeySet
AutoIt для новичков
oneDmitry 9 2076 Последний ответ Ноябрь 23, 2009, 00:41:58
от CreatoR
Помогите пожалуйста написать скрипт для глобального переименования файлов
Стол заказов
kolyan-xerox 0 1862 Последний ответ Ноябрь 23, 2009, 05:27:37
от kolyan-xerox
Формирование меню из переменных
AutoIt для новичков
r35p3ct 5 1506 Последний ответ Декабрь 30, 2009, 17:35:24
от r35p3ct
[Автоматизация] Нужен автокликер по ссылкам
Стол заказов
Boxer18181818 4 1940 Последний ответ Август 18, 2010, 16:59:18
от Boxer18181818
Ограничение по количеству переменных и функций пользователя.
AutoIt для новичков
ZaEzzz 2 363 Последний ответ Октябрь 03, 2011, 10:45:46
от ZaEzzz
[Автоматизация] Опять про прямые ссылки с видео хостингов (нужен минимальный скрипт)
Стол заказов
komorov74 0 187 Последний ответ Январь 28, 2012, 00:08:59
от komorov74
ATT - Инструмент добавления мультиязычности в скрипт
Инструменты и помощь по AutoIt
CreatoR 2 487 Последний ответ Май 09, 2012, 14:33:45
от CreatoR
Переименования фалов
AutoIt для новичков
Serafim 2 99 Последний ответ Май 11, 2012, 16:17:20
от madmasles
Перенесено: [Автоматизация] Help me. Нужен бот для Легенды Вк (http://vk.com/app738755)
Стол заказов
madmasles 0 45 Последний ответ Май 17, 2012, 22:48:35
от madmasles


Реклама

* Последние сообщения на форуме
post Проблема с циклами While
[AutoIt для новичков] Andeangl Сегодня в 11:03:15
post Уроки программирования и автоматизации посредством AutoIt для чайников
[AutoIt для новичков] aak Сегодня в 09:41:45
post Re: Как спарсить ссылку внутри тега "td" определенного класса
[Регулярные выражения и прочее] eropov Сегодня в 05:27:00
post Re: Ограничение доступа(блокировка) к компьютеру если не вставлен носитель с ключом
[AutoIt для новичков] Pat4005 Сегодня в 01:02:55
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Сегодня в 00:02:03
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Май 19, 2012, 23:55:37
post Узнать значение возвращаемое функцией javascript
[Автоматизация IE и Web-интерфейса] Viktor1703 Май 19, 2012, 23:25:05
post Re: Проверка запущенного процесса на удаленной машине
[AutoIt для новичков] sngr Май 19, 2012, 23:06:52
post Re: Проверка запущенного процесса на удаленной машине
[AutoIt для новичков] Dm666 Май 19, 2012, 22:38:13
post Re: Иконка AutoIt3 для разных Dock-ов
[Графика и творчество в рамках AutoIt] Ganibal95 Май 19, 2012, 22:21:35

* Пользователи онлайн
  • Dot Гостей: 80
  • Dot Скрыт: 0
  • Dot Пользователей: 21
  • Dot Пользователи Online: