Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

AutoIt3
(Часть 1)

 
 
Домашняя страница: http://www.autoitscript.com
Страница загрузки: http://www.autoitscript.com/autoit3/downloads.php
 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Учебник по AutoIt для начинающих
  • Видео-руководства на YouTube (англ.)
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf) - Та же книжка online.
  • Справочник по командам rundll32
  • Справка WinAPI (Win 32 API по шагам)
  • Русский справочник по API-функциям
  • Полезная информация по WinAPI на русском
  • Помощь по регулярным выражениям
  • Tutorial on DllCall() & DllStructs - Небольшое (пока?) руководство по использованию функции DllCall*()
     
     
    Ресурсы, посвящённые AutoIt
  • AutoIt в Википедии
  • AutoIt Russian Community - Русское сообщество AutoIt
  • Jabber-конференция для обсуждения мелких вопросов касающихся AutoIt
  • Обзор скриптового языка AutoIt (рус.)
  • AutoIt на Yahoo! Groups
  • Раздел в конфиренции OSzone.net, посвящённый AutoIt
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Коллекция AutoIt-скриптов от Sanja Alone
  • Коллекция AutoIt-скриптов от MSFN (могут быть устаревшие).
  • Коллекция AutoIt-скриптов от AZJIO
     
     
    !!! Полезные советы и заметки - новичкам и не только
     
     
  • Рекомендации по написанию скриптов
     
     
    Инструменты для AutoIt:
  • AutoIt Path Switcher - Переключение пути к папке AutoIt.
  • AutoIt3Wrapper [Страница закачки] - Программа для компиляции скрипта с дополнительными возможностями (добавление значка, описания и т.п).
  • Koda (724 Kb) - Визуализация работы с GUI - аналог Visual Basic.
  • CodeWizard (400 Kb) - нечто простенькое на вариант Koda.
  • AutoItMacroGenerator (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt-код.
  • ScriptWriter (78 Kb) - Аналог AutoItMacroGenerator.
  • API Constants (1042 Kb) - Утилита для просмотра всех констант API-функции и не только.
  • Страница закачки утилит, которые идут в отдельной поставке редактора SciTE.
  • AutoIt-меню для браузера Opera.
     
    Готовые скрипты и программы с открытым кодом на AutoIt:
  • Desktop Icons Restorator - Скрипт-программа для сохранения/восстановления позиции значков рабочего стола.
  • CaptureIt - Утилита для захвата изображений с экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста.
  • Скрипт раскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger) - Последняя версия: AutoItScript Add Debugger
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Чтение и запись данных с/в окна/о SciTE
  • Пример автообновления версии своего приложения
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значок в области уведомлений)
  • Пример создания своего мастера (Wizard)
  • Метод, позволяющий запускать код VBS без создания временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за буфером обмена с заменой неподдерживаемых в имени файла символов
  • Подключение приложения (GUI) к буферу обмена
  • Пример использования меню с значками (ModernMenu.au3) -> Список программ в меню значка в системном трее
  • Пример подсчёта интервала времени между нажатиями клавиш
  • Слежение нажатых элементов в текущем окне (под курсором)
  • Написание instant messaging Бота на AutoIt
  • Способ, позволяющий посылать нажатие клавиши в неактивное окно (не путать со свёрнутым)
  • Сервер <=> Клиент - Пример передачи файла
  • Пример отображения только элементов GUI (без самой оболочки)
  • Модуль, превращающий ваше приложение в Trial-версию
  • Слежение за выделенным текстом и с последующим его помещением в файл
     
    Отдельные функции и библиотеки (UDF):
  • Функции, относящиеся к интернету
  • Функции для работы с процессами и окнами
  • Функции для работы с файлами
  • Функции для GUI/Tray
  • Системные функции
  • Разное (то, что не подпадает под другие категории)
     


     
    За шапкой следит ViSiToR  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 14:47 12-01-2009 | Исправлено: Maz, 11:50 17-04-2017
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NORIO
    пример как определить загруженность cpu процессом

    Цитата:
    и его ненормальной длительности
    - If ProcessExists Then отсчет времени..
     
    Удачного Вам срещивания _)
     
     
    Добавлено:
    ViSiToR
    ошибаюсь? убрав $BIF_RETURNONLYFSDIRS кнопка ок вообще не реагирует и всегда в ENABLE
    пример:
    Подробнее...
     
    Добавлено:
     
     
    имел в виду вот это:
    Подробнее...
     
    Добавлено:
     
     
    теперь если в начальной папке нет файлов из фильтра, кнопка ОК при старте DISABLE
    а была беда, всегда при старте кнопка в ENABLE, не взирая на фильтр
    Подробнее...

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 22:36 05-03-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy
    Я тогда не понял вопроса, мне казалось что нужно предотвратить именно изменение статуса кнопки...
     
    Перефразируй вопрос. И кстати, я так понял у тебя функции не отсюда? Там новее...
     
    P.S
    И не нужно постоянно включать повторяющиеся функции и константы в каждом примере (по крайней мере если примеры для меня ), я их могу взять с первого примера

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:06 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    пример, как сделать свое приложение из стандартного windows приложения открыв Звукозапись и перетащив его контрол элементы:
     

    Код:
    #include <WindowsConstants.au3>
    Opt("TrayIconDebug",1)
     
    $hGui = GUICreate("Test GUI", 380, 380)
    GUISetState(@SW_HIDE, $hGui)
     
    $hPid=Run(@SystemDir & '\sndrec32.exe /play "' & @WindowsDir & '\Media\tada.wav"',"", @SW_HIDE)
    WinWait("[CLASS:SoundRec]", "", 5)
    $hChild = WinGetHandle("[CLASS:SoundRec]", "")
    $NEXSTYLE = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hChild, "int", 236)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hChild, "int", 236, "int", BitOR($NEXSTYLE[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hChild, "hwnd", $hGui)
     
    WinMove($hChild, "", -6, -40 ,400,450)
    ControlHide($hChild,"","shadowframe1")
    ControlHide($hChild,"","noflickertext1")
    ControlHide($hChild,"","noflickertext2")
    ControlHide($hChild,"","shadowframe2")
    ControlHide($hChild,"","noflickertext3")
    ControlHide($hChild,"","noflickertext4")
    ControlHide($hChild,"","msctls_trackbar321")
    ControlMove($hChild,"","wavedisplay1",150,150)
    ControlMove($hChild,"","Button1",10,10,50,50)
    ControlMove($hChild,"","Button2",70,10,50,50)
    ControlMove($hChild,"","Button3",130,10,50,50)
    ControlMove($hChild,"","Button4",190,10,50,50)
    ControlMove($hChild,"","Button5",250,10,50,50)
     
    GUISetState(@SW_SHOW, $hGui)
    WinSetState($hChild,"",@SW_SHOW)
     
    While GUIGetMsg()<>-3
        Sleep(1)
    WEnd
     
    Func
    OnAutoItExit()
        ProcessClose($hPid)
    EndFunc

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 00:10 06-03-2009
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть программа, запущенная с помощью
    $foo = Run()
    Она создает окно, в которое необходимо передать данные.
    Вопрос - как найти handle этого окна используя $foo ?
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:24 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ

    Код:
    $iPID = Run('Notepad.exe')
    WinWait('[CLASS:Notepad]')
     
    $sWindow = _ProcessGetWindow($iPID, 1)
    If MsgBox(32+4, 'WinHandle',    'Handle Notepad from function Run=' & $sWindow & @CRLF & @CRLF & _
                                    'Закрыть этот Notepad?') == 6 Then WinClose($sWindow)
     
    Func _ProcessGetWindow($iPID, $iRet=-1)
        Local $aWinList = WinList()
        Local $aRet[2]
     
        If IsString($iPID) Then $iPID = ProcessExists($iPID)
     
        For $i = 1 To UBound($aWinList)-1
            If WinGetProcess($aWinList[$i][1]) = $iPID Then
                $aRet[0] = $aWinList[$i][0] ;Title
                $aRet[1] = $aWinList[$i][1] ;WinHandle
     
                If $iRet = 0 Then Return $aRet[0]
                If $iRet = 1 Then Return $aRet[1]
     
                Return $aRet
            EndIf
        Next
     
        Return SetError(1, 0, $aRet)
    EndFunc

     
    пример из шапки

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 01:02 06-03-2009
    vicbox777



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ 23:24 05-03-2009
    Цитата:
    Вопрос - как найти handle этого окна используя $foo ?


    Код:
    $iPID = Run('Notepad.exe')
    Sleep(1000)
    $sTitle=
    _WinGetTitleByPID($iPID)
    $Hndl=WinGetHandle($sTitle)
    Winclose($Hndl,"")
    MsgBox(0,"хендл окна",$Hndl)
     
     
    Func
    _WinGetTitleByPID($iPID, $nArray = 1)
       
    If IsString($iPID) Then $iPID = ProcessExists($iPID)
       
    Local $aWList =
    WinList(), $sHold
       
    For $iCC = 1 To $aWList[0][0]
           
    If
    WinGetProcess($aWList[$iCC][1]) = $iPID And _
               
    BitAND(WinGetState($aWList[$iCC][1]), 2) Then
                If
    $nArray Then Return $aWList[$iCC][0]
               
    $sHold &= $aWList[$iCC][0] & Chr(1)
           
    EndIf
        Next
        If
    $sHold Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
       
    Return SetError(1, 0, 0)
    EndFunc

    Функция: _WinGetTitleByPID из библиотеки WinGetTitleEx.au3 - ViSiToR-а a.k.a CreatoR-а

    Всего записей: 165 | Зарегистр. 17-06-2008 | Отправлено: 01:35 06-03-2009 | Исправлено: vicbox777, 01:45 06-03-2009
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Странно, но функция StringIsSpace() не определяет @CRLF.
    Не тестил, но в моем случае при чтении строки из файла , состоящей только из переноса строки эта ф-я не определяет ее как должна, хотя в доке об это сказано

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 03:23 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    timsky 03:23 06-03-2009
    Цитата:
    Странно, но функция StringIsSpace() не определяет @CRLF.  
     Не тестил, но в моем случае при чтении строки из файла , состоящей только из переноса строки эта ф-я не определяет ее как должна, хотя в доке об это сказано

     
    верно, должна, и даже определяет: пример в справке -  явное тому подтверждение  

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 03:51 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    значит не только.....не только пробелы, перевод/возврат корректи в строке...+ может так глянуть...

    Код:
    MsgBox(0, '', 'StringIsSpace=' & StringIsSpace($String) & @CRLF & 'Строка без пробелов: [' & StringStripWS($String, 8) & ']')

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 07:57 06-03-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy 07:57 06-03-2009
    Цитата:
    значит не только.....не только пробелы

    Ну в справке же написано что именно:
     

    Цитата:
    Remarks
     
    Whitespace includes Chr(9) thru Chr(13) which are HorizontalTab, LineFeed, VerticalTab, FormFeed, and CarriageReturn.

     
    Т.е @LF (LineFeed) и @CR (CarriageReturn) определяются. Если нет, то нужен пример, явно это показываюший.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:21 06-03-2009
    ZeeX

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен скрипт, который может приостанавливать и продолжать воспроизведение музыки в любом запущенном аудиоплеере...
    Есть идеи?
    Кроме хоткеев ничего в голову не приходит....

    Всего записей: 15 | Зарегистр. 14-12-2007 | Отправлено: 15:32 06-03-2009 | Исправлено: ZeeX, 15:35 06-03-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy
    Я так понял это сообщение было не замечено?
     
    Добавлено:
    ZeeX 15:32 06-03-2009
    Цитата:
    Нужен скрипт, который может приостанавливать и продолжать воспроизведение музыки в любом запущенном аудиоплеере

    Универсальности в этом случае добиться сложно, т.к каждый плеер имеет свои методы воспроизведения и обработки файлов. Для Winamp к примеру, есть спец. библиотека, для остальных нужен другой подход.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:38 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ViSiToR 15:21 06-03-2009
    Цитата:
    Ну в справке же написано что именно:

    так...эээ...и я о том же - значит при выполнение в строке не только пробелы (и другиое, что принимаетс за true)
     
    undefined
    Цитата:
    Я так понял это сообщение [?] было не замечено?    

    ага, не заметил, сейчас гляну как у меня он будет...
     
     
     
     
    Добавлено:
    ViSiToR 15:21 06-03-2009
    Цитата:
    Ну в справке же написано что именно:

    так...эээ...и я о том же - значит при выполнение в строке не только пробелы (и другиое, что принимаетс за true)
     
    undefined
    Цитата:
    Я так понял это сообщение [?] было не замечено?    

    ага, не заметил, сейчас гляну как у меня он будет...
     
     
     
     
    Добавлено:
    аам....ViSiToR, ну что то тут у меня не работает...теперь кнопка Ok всегда ENABLE, что то не так на этот раз делаю?
    использовал функцию из System_Dialogs.au3
     

    Код:
    #region: - Include
        #include <GUIConstantsEx.au3>
        #include <System_Dialogs.au3>
        #include <WindowsConstants.au3>
    #endregion
     
    #region: - Option

        Opt('GUIOnEventMode',       1)
        Opt('MustDeclareVars',      1)
        Opt('TrayIconDebug',        1)
        Opt('TrayIconHide',         0)
    #endregion
     
    #region: - Global

        Global  $hWinMain, $sFiles_Filter
    #endregion
     
    #region: GUI

        $hWinMain = GUICreate('Test', 400, 400, -1, -1)
            GUISetOnEvent($GUI_EVENT_CLOSE,     '_Pro_Exit')
     
        GUICtrlCreateButton('Select 1', 10, 50, 150, 25)
            GUICtrlSetOnEvent(-1, '_Select_Dir_1')
     
        GUICtrlCreateButton('Select 2', 10, 50+45, 150, 25)
            GUICtrlSetOnEvent(-1, '_Select_Dir_2')
    #endregion
     
    #region: - После создания всех GUI

        GUISetState(@SW_SHOW, $hWinMain)
    #endregion
     
    #region: - Sleep, Exit

    While 1
        Sleep(10)
    WEnd
     
    Func
    _Pro_Exit()
        Exit
    EndFunc

    #endregion
     
    Func _Select_Dir_1()
        $sFiles_Filter = 'IEXPLORE.EXE'
        _FileSelectFolder('Укажите папку содержащую файл(ы): ' & $sFiles_Filter, 0, BitOR($BIF_NEWDIALOGSTYLE, $BIF_RETURNONLYFSDIRS, $BIF_NONEWFOLDERBUTTON), @ProgramFilesDir & '\Internet Explorer\', $hWinMain)
    EndFunc
    Func
    _Select_Dir_2()
        $sFiles_Filter = 'IEXPLORE.EXE'
        _FileSelectFolder('Укажите папку содержащую файл(ы): ' & $sFiles_Filter, 0, BitOR($BIF_NEWDIALOGSTYLE, $BIF_RETURNONLYFSDIRS, $BIF_NONEWFOLDERBUTTON), @ProgramFilesDir, $hWinMain)
    EndFunc

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 16:30 06-03-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy 16:30 06-03-2009
    Цитата:
    использовал функцию из System_Dialogs.au3

    Там $sFiles_Filter переделан в $sFSF_Files_Filter:
     

    Код:
    #include <GUIConstantsEx.au3>
    #include <System_Dialogs.au3>
    #include <WindowsConstants.au3>
    ;
     
    Opt('GUIOnEventMode', 1)
    Opt('MustDeclareVars', 1)
    Opt('TrayIconDebug', 1)
    Opt('TrayIconHide', 0)
     
    Global $hWinMain
     
    $hWinMain
    = GUICreate('Test', 400, 400, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit_Proc')
     
    GUICtrlCreateButton('Select 1', 10, 50, 150, 25)
    GUICtrlSetOnEvent(-1, '_Select_Dir_1')
     
    GUICtrlCreateButton('Select 2', 10, 50 + 45, 150, 25)
    GUICtrlSetOnEvent(-1, '_Select_Dir_2')
     
    GUISetState(@SW_SHOW, $hWinMain)
     
    While 1
        Sleep(100)
    WEnd
     
    Func
    _Exit_Proc()
        Exit
    EndFunc
     
    Func
    _Select_Dir_1()
        $sFSF_Files_Filter = 'IEXPLORE.EXE'
     
        _FileSelectFolder('Укажите папку содержащую файл(ы): ' & $sFSF_Files_Filter, _
            0, BitOR($BIF_NEWDIALOGSTYLE, $BIF_RETURNONLYFSDIRS, $BIF_NONEWFOLDERBUTTON), _
            @ProgramFilesDir & '\Internet Explorer\', $hWinMain)
    EndFunc
     
    Func
    _Select_Dir_2()
        $sFSF_Files_Filter = 'IEXPLORE.EXE'
     
        _FileSelectFolder('Укажите папку содержащую файл(ы): ' & $sFSF_Files_Filter, _
            0, BitOR($BIF_NEWDIALOGSTYLE, $BIF_RETURNONLYFSDIRS, $BIF_NONEWFOLDERBUTTON), _
            @ProgramFilesDir, $hWinMain)
    EndFunc


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:00 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Там $sFiles_Filter переделан в $sFSF_Files_Filter:

    вах-вах-вах меня.....не заметил....
    все работает отлично и даже кнопка Ok ведет себя "подабающе" )))
    Благодарю
     
    Добавлено:
     
    хотя....уже не очень нужно, хотел сделать штуку для браузера копировать, вставлять, запускать скрипты - а вот сегодня поставил AutoIt Menu for Opera и понял - нафиг ))) осталось только попросить тебя добавить туда раскраску выделенного кода - и будет сказка )

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 23:14 06-03-2009
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот пример не работоспособности ф-и StringIsSpace:
    http://rapidshare.com/files/206170300/StringIsSpace.rar.html
    http://www.rapidshare.ru/953487
     
    Залил архивом, т.к. там и тестовый файлик есть сразу.
     
    Вот сам скрипт из архива:

    Код:
    $file = FileOpen('test.txt', 0)
     
    While 1
        $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
     
        If
    StringIsSpace($line) Then
            MsgBox(16, 'String is SPACE', '[' & $line & ']')
        Else
            MsgBox(64, 'String is NOT SPACE', '[' & $line & ']')
        EndIf
    WEnd

     
    FileClose($file)

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 23:51 06-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    timsky
    таааккк...все ж отлично работает  
    что же не устраивает?
     
    если все правильно понял, из справки, тут ни чего не сказанно про пустые строки - вообще без какого-либо символа:

    Цитата:
    Whitespace includes Chr(9) thru Chr(13) which are HorizontalTab, LineFeed, VerticalTab, FormFeed, and CarriageReturn.
    Whitespace also includes the standard space ( Chr(32) ).

     
    но не мешает проверять так:

    Код:
    $file = FileOpen('test.txt', 0)
     
    While 1
        $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
     
        If
    StringIsSpace($line) OR $line = '' Then
            MsgBox(16, 'String is SPACE', '[' & $line & ']')
        Else
            MsgBox(64, 'String is NOT SPACE', '[' & $line & ']')
        EndIf
    WEnd

     
    FileClose($file)

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 00:09 07-03-2009
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy
    Ну я примерно так и проверяю, но ты все же не правильно понял:
     
    StringIsSpace  
    Checks if a string contains only whitespace characters
    Remarks
    Whitespace includes Chr(9) thru Chr(13) which are HorizontalTab, LineFeed, VerticalTab, FormFeed, and CarriageReturn

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 14:20 07-03-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    timsky
    У тебя в примере (в файле test.txt) имеется пустая строка, она не содержит вообще никаких символов, это эквивалентно такой проверке:
     

    Код:
    $Line = ''
     
    If StringIsSpace($Line) Then
        MsgBox(16, 'String is SPACE', '[' & $Line & ']')
    Else
        MsgBox(64, 'String is NOT SPACE', '[' & $Line & ']')
    EndIf

     
    Возможно тут проблема в FileReadLine которая читает пустую строку, хотя и это логично, ведь это всё же строка - А остальное ответственность юзера, что делать с этой-пустой строкой.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:30 07-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    timsky 14:20 07-03-2009
    Цитата:
    Whitespace includes Chr(9) thru Chr(13) which are HorizontalTab, LineFeed, VerticalTab, FormFeed, and CarriageReturn

    все верно ты выделил - все правильно и все бы работало, если бы чтение было через FileRead.
    а вот через FileReadLine в той строке, в которой нет ни одного символа и должны быть только LineFeed+CarriageReturn
    их не будет, так как при чтение FileReadLine-ом:

    Цитата:
    Замечания
    Позволяет вернуть содержание строки текста. Все конечные символы новой строки ( CHR(10) или @LF ) удаляются автоматически.

    поэтому под StringIsSpace эта строка и не попадала.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 17:01 07-03-2009 | Исправлено: sproxy, 17:02 07-03-2009
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
    Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru