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

  • Февраль 23, 2012, 00:12:27 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

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

Новости:

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

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

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

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

* Реклама

Автор Тема: получение значения переменных из названий папок и файлов с помощью шаблона  (Прочитано 365 раз)

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

black1 [?]

  • Новичок
  • *
  • Репутация: 0
  • Offline Offline
  • Сообщений: 10
  • Версия AutoIt: v3.x.x.x
  • C++,Pic
    • Награды
есть текст в поле edit(GUI AutoIt)
нужно по поочередно пройтись по тексту..
есть несколько переменных мол $sпапка $sархив $sфайл $sномер
получается надо чтобы опознавалось по шаблону папка ,архив , файл и присваивало текст переменной
 
этакий пример работы скрипта$папка = На вид3(333)
$архив = OXMKN12325(1+1)
$файл = MxS SZ_48_00_SOFT_FC_PI_MAIN
$номер = 10120
$файл = MxS SZ_48_00_SOFT_FC_IE_MAIN
$номер = 1
$папка = На вид2(555)
$архив = OTMKN134534(1+0)
$файл = TR_OBEP_316_00_SOFT_QQC_FI_BAIN2a
$номер = 523

вот как то так массивы то есть не нужны, надо тольк 3 переменные дело в том когда будет срабатывать $sпапка = или $sархив = или $sфайл =
будет вызваться функция которая будет вызываться с параметрами $sпапка $sархив $sфайл $sномер

поле Edit (без комментариев (;папка ;архив ;файл) эт для наглядности)
На вид3(333): ;папка
OXMKN12325(1+1): ;архив
MxS SZ_48_00_SOFT_FC_PI_MAIN – 10120 ;файл
MxS SZ_48_00_SOFT_FC_IE_MAIN – 1 ;файл
На вид2(555): ;папка
OTMKN134534(1+0): ;архив
TR_OBEP_316_00_SOFT_QQC_FI_BAIN2a – 523 ;файл
На вид3(333): ;папка
ER_OTP_307_00_SOFT_SW_PI_MAIN2a – 143 ;файл
ER_OXP_308_00_SOFT_FC_PI_OAIN2a – 34 ;файл
ER_OTP_315_00_SOFT_FC_PI_MRIN2a –78 ;файл
TR_OBP_316_00_SOFT_FC_FI_BAIN2a – 566 ;файл
ER_OTP_326_00_SOFT_FC_FI_MAIN – 12 ;файл
ER_OTP_327_00_SOFT_FC_PI_MAIN – 345 ;файл
XMKN2123345(1+1): ;архив
FX_HTTR_13_00_SQFT_ZC_PI_MAIN – 65 ;файл


что то похожее работает 'На вид3\(333\)\:' над сделать на остальные да и с ExitLoop ченть придумать потом...
Код: AutoIt [Выделить]
$nOffset = 1
While 1
    $array = StringRegExp( $TextEdit1, '(.*На вид.\(333\))\:.*', 1, $nOffset)
   
     If @error = 0 Then
        $nOffset = @extended
     Else
        ExitLoop
     EndIf
     
     for $i = 0 to UBound($array) - 1
      msgbox(0, "RegExp Test with Option 1 - " & $i, $array[$i])
     
  Next
 
  $array2 = StringRegExp( $TextEdit1, '.*\n(.*\(1\+1\))\:.*', 1, $nOffset)
   
     If @error = 0 Then
        $nOffset = @extended
     Else
        ExitLoop
     EndIf
     
     for $i2 = 0 to UBound($array2) - 1
     msgbox(0, "RegExp Test with Option 1 - " & $i2, $array2[$i2])
     Next
     
WEnd
 

все по силам но не могу разобраться с Искомый образец (шаблон). StringRegExp
для
На вид3\(333\) (вроде бы работает не знаю так над или нет?) StringRegExp возвращает 'На вид3(333)'
OXMKN12325(1+1): (вот тут пробвл так \n*\(1\+1\) не работает или \(1\+1\) возвращает не то (1+1) надо OXMKN12325(1+1)
MxS SZ_48_00_SOFT_FC_PI_MAIN – 10120 ( до сюда дойти не смог))) тут нужно $файл = MxS SZ_48_00_SOFT_FC_PI_MAIN $номер = 10120


Также пробовал в скрипте товарища beve http://forum.oszone.net/post-1043105.html (очень удобно но чет не получилось подобрать нужный шаблон
ключ моменты для шаблона
На вид3(333):
(1+1):



В обще подумал может сделать через получить строку Edit, и за тем if`ом пробежаться по ней

« Последнее редактирование: Январь 28, 2012, 22:36:07 от black1 »



  Записан

black1 [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 10
  • Версия AutoIt: v3.x.x.x
  • C++,Pic
    • Награды
c темой не ясно.. как ее назвать..
прошу добавить
код скрипта/программы товарища beve http://forum.oszone.net/post-1043105.html
в данном скрипте удобно подставлять шаблоны и смотреть как работают, кнопкой переключаются режимы работы StringRegExp и StringRegExpReplace
сюда Частоиспользуемые выражения / шаблоны




  Записан

Garrett [?]

  • Модератор
  • *
  • *****
  • Репутация: 485
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 1901
  • Версия AutoIt: 3.3.6.1
    • Награды
ПредупреждениеЗа нарушение правил форума (пункт Б.5):
Цитата
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.

Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"StringRegExp " - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
ПредупреждениеЗа нарушение правил форума (пункт В.11):
Цитата
Любые отрывки AutoIt кода необходимо заключать в тег [autoit] (подробнее), а обычный код соответственно в тег [code] (подробнее). Также большие выдержки текста помещайте под тег [spoiler] (подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
« Последнее редактирование: Январь 28, 2012, 14:30:02 от CreatoR »



  Записан

--------------------------------------------------------------------------------------------------
Все стандарты Document Object Model HTML
--------------------------------------------------------------------------------------------------
«Жизнь – цепь, а мелочи в ней – звенья. Нельзя звену не придавать значения!»

black1 [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 10
  • Версия AutoIt: v3.x.x.x
  • C++,Pic
    • Награды
кажется получилось для  OXMKN12325(1+1): 
Код: AutoIt [Выделить]
 '.*\n(.*\(1\+1\))\:.*'
« Последнее редактирование: Январь 28, 2012, 14:18:29 от black1 »



  Записан

Garrett [?]

  • Модератор
  • *
  • *****
  • Репутация: 485
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 1901
  • Версия AutoIt: 3.3.6.1
    • Награды
black1  [?]
Цитата
c темой не ясно.. как ее назвать..
Вам сюда

Цитата
кажется
...нужно сначала выполнить требования Модераторов!!!




  Записан

black1 [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 10
  • Версия AutoIt: v3.x.x.x
  • C++,Pic
    • Награды
получилось так, делаю дальше...
Код: AutoIt [Выделить]
$nOffset = 1
While 1
    $array = StringRegExp( $TextEdit1, '.*\n', 1, $nOffset)
   
    If @error = 0 Then
       $nOffset = @extended
     Else
        ExitLoop
     
     EndIf
     
     for $i = 0 to UBound($array) - 1
    ; msgbox(0, "RegExp Test with Option 1 - " & $i, $array[$i])
     ;**********************************************************'.*На вид.\(333\))\:.*'  '.*\n(.*\(1\+1\))\:.*'
        $b = StringRegExp($array[$i], '(.*На вид.\(333\))\:.*',0)
        if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
         
            $b = StringRegExp($array[$i], '(.*\(1\+1\)\:).*',0)
            if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
           
              $b = StringRegExp($array[$i], '(.* – \d*)',0)
              if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
     ;**********************************************************
     Next

WEnd
« Последнее редактирование: Январь 29, 2012, 02:27:12 от black1 »



  Записан

madmasles [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 1336
  • Online Online
  • Пол: Мужской
  • Сообщений: 3487
  • Версия AutoIt: 3.3.6.1 - 3.3.8.1
    • Награды
black1,
Вы бы написали, что конкретно из этого текста надо получить, а то я, например, ничего не понял.

black1 [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 10
  • Версия AutoIt: v3.x.x.x
  • C++,Pic
    • Награды
madmasles,
  да хм, задачу в сетки не смог объяснить :(
Над  под настроить  GuiListView приходится сдвигать
вот что получилось
Код: AutoIt [Выделить]
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;+300
GUICreate("Pristv Print", 775, 415)  
;************************************************
; BUTTON Switch Screen
$scan = GUICtrlCreateButton("scan&doc", 710, 50, 60)
; BUTTON Mode Print
$PrintDuplex = GUICtrlCreateButton("&Duplex", 710, 120, 60)
$PrintSimpleks = GUICtrlCreateButton("&Simplex", 710, 160, 60)
; EDIT
$Edit1 = GUICtrlCreateEdit("", 5, 5, 700, 390, BitOR($ES_MULTILINE,$ES_AUTOHSCROLL,$WS_HSCROLL,$WS_VSCROLL,$ES_WANTRETURN))
$Edit2 = GUICtrlCreateEdit("c:\qwe\32443\", 5, 395, 700, 60, BitOR($ES_AUTOHSCROLL,$WS_HSCROLL))
; LIST VIEW
Local $iListView = GUICtrlCreateListView("PDF|Архив|Печать|К.СТР", 5, 5, 700, 408)
GUICtrlSetState($iListView,$GUI_HIDE)
;************************************************
GUISetState(@SW_SHOW)
; number
Dim $TextEdit1
Dim $TextEdit2
Dim $stats = 0;
Dim $folder
Dim $arhive
Dim $fail
Dim $namber
Dim $d
Dim $s
 
While 1
  $msg = GUIGetMsg()

  Select
  Case $msg = $scan
     if $stats = 0 Then
        $stats = 1
          ;поле Edit Заполненно, обрабатываем и показываем списк на печать
        GUICtrlSetState($Edit1,$GUI_HIDE)
        GUICtrlSetState($Edit2,$GUI_HIDE)
       
        ;GUICtrlSetState($Edit2,$GUI_SHOW)
       
        ;GUICtrlSetState($iListView,$GUI_HIDE)
        GUICtrlSetState($iListView,$GUI_SHOW)
      ;**************   STEP 2 ************************
     
    $TextEdit1 = GUICtrlRead($Edit1)
    $TextEdit2 = GUICtrlRead($Edit2)
   
     ;StringFormat('"%s" e "%s%s" "%s%s"', $winrarpath, $rootpath &"555\", $file, $rootpath &"555\")
    ;Option 1, using offset
 
 
$nOffset = 1
While 1
    $array = StringRegExp( $TextEdit1, '.*\n', 1, $nOffset)
   
    If @error = 0 Then
       $nOffset = @extended
     Else
        ExitLoop
     
     EndIf


     for $i = 0 to UBound($array) - 1
    ; msgbox(0, "RegExp Test with Option 1 - " & $i, $array[$i])
     ;**********************************************************'.*На вид.\(333\))\:.*'  '.*\n(.*\(1\+1\))\:.*'
        $b = StringRegExp($array[$i], '(.*На вид.\(333\))\:.*',0)
        ;if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
         if $b = 1 Then $folder = 333
       
        $b = StringRegExp($array[$i], '(.*На вид.\(555\))\:.*',0)
        ;if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
         if $b = 1 Then $folder = 555      
           
            $b = StringRegExp($array[$i], '(.*\(1\+1\)\:).*',0)
            ;if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
            if $b = 1 Then $arhive = StringTrimRight( $array[$i], 3 )
           
            $b = StringRegExp($array[$i], '(.*\(1\+0\)\:).*',0)
            ;if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
            if $b = 1 Then $arhive = StringTrimRight( $array[$i], 3 )
               
               $b = StringRegExp($array[$i], '(.* – \d*)',0)
               ;if $b = 1 Then MsgBox(0,StringLen ($array[$i]) ,$array[$i])
               ; файл и номер
               if $b = 1 Then
               $fail = StringRegExp($array[$i], '(.*) – \d*',1)
               for $i2 = 0 to UBound($fail) - 1
                $fail = $fail[$i2]
               Next
             
               $namber = StringRegExp($array[$i], '.* – (\d*)',1)
               for $i2 = 0 to UBound($namber) - 1
                $namber = $namber[$i2]
               Next
             
              ; GUICtrlCreateListViewItem($fail &'|' &$arhive &'|' &$folder &'|' &$namber , $iListView)
              GUICtrlCreateListViewItem(StringFormat('%s|%s|%d|%s',$fail,$arhive,$folder,$namber ), $iListView)
            EndIf
     ;**********************************************************
     Next

WEnd




     Else
        $stats = 0  
          ;вернутся на поле Edit, но мб не давать редактировать
         ;GUICtrlSetState($Edit2,$GUI_HIDE)
        GUICtrlSetState($Edit1,$GUI_SHOW)
        GUICtrlSetState($Edit2,$GUI_SHOW)
       
        GUICtrlSetState($iListView,$GUI_HIDE)
        ;GUICtrlSetState($iListView,$GUI_SHOW)
       ;**************   STEP 2 ************************
       
     
   
   
   
     EndIf

       

     ; MsgBox(0, "GUI Event", "scan!" &$stats)

    Case $msg = $GUI_EVENT_CLOSE
     ; MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
      ExitLoop
  EndSelect
WEnd
 


« Последнее редактирование: Январь 29, 2012, 04:06:35 от black1 »



  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
многократная отправка в буфер обмена названий большого количества файлов
Стол заказов
Alexey 32 3125 Последний ответ Сентябрь 10, 2010, 15:33:57
от axlwor
TOSHIFEX - Откат скрытых файлов и папок / системных файлов / расширении файлов
Примеры и рабочие проекты
CreatoR 7 2160 Последний ответ Апрель 16, 2011, 00:12:31
от CreatoR
Дерево папок и файлов !
AutoIt для новичков
romashka 11 2658 Последний ответ Ноябрь 30, 2010, 23:34:58
от Zaramot
Проверка на существование файлов и папок
AutoIt для новичков
Nordik 6 729 Последний ответ Февраль 21, 2011, 10:11:47
от Nordik
[Данные, строки] Как "правильно" считать имена переменных и их значения из внешнего файла?
AutoIt для новичков
gora 6 836 Последний ответ Апрель 20, 2011, 21:25:14
от AZJIO
Архивация файлов/папок по checkbox
AutoIt для новичков
k790 27 1589 Последний ответ Январь 23, 2012, 19:58:39
от k790
Дерево папок и файлов
AutoIt для новичков
armenxxx1 3 398 Последний ответ Ноябрь 03, 2011, 22:09:22
от AZJIO
Получение данных из HTML посредством RegExp шаблона
Регулярные выражения и прочее
Alexaut 12 1057 Последний ответ Ноябрь 06, 2011, 21:21:05
от Alexaut
Разархивация файлов/папок по checkbox
AutoIt для новичков
k790 14 709 Последний ответ Декабрь 08, 2011, 17:55:36
от k790
[Процессы] Узнать значения переменных в autoIT программе
AutoIt для новичков
Poma_007 3 207 Последний ответ Декабрь 28, 2011, 22:55:43
от Poma_007


* Реклама