Перейти к содержимому

Фотография

Доступ к файлам


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 21

#1 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 30 ноября 2005 - 15:13

Драсьте все! Вопрос такой. Есть энное количество файлов, которые надо проверить на доступ (чтение, запись, копирование, удаление, перемещение и т.д.). Как только робот доходит до строчки вроде этой

Open "c:\бла-бла.txt" for Input as #1

или этой
Open "c:\бла-бла-бла.txt" for Output Access Write as #1

(и при условии, что файл закрыт на чтение), он останавливает воспроизведение скрипта и радостно пишет, что доступа к файлу он получить не может,после чего столь же радостно вываливается в Тест Менеджер. Все б ничего, да только таких файлов несколько, и проверить треба их все за один прогон скрипта, а дальше воспроизводиться скрипт ну никак не желает (разумеется).

ИМХО, надо бы получить результат обращения к файлу, и если доступа нет (и файл закрыт для записи, чтения...), то проанализировать значение, возвернутое функцией, записать в отчет, что РДВ проверены, багов нет и пойти пить чай (кофе, пиво, ...., С2H5OH).

Весь вопрос - как получить значение функции (т.е. можно обращаться к файлу или нет).

Как бы хелп, кто-нибудь чем-нибудь...
  • 0

#2 serega

serega

    Опытный участник

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 30 ноября 2005 - 15:19

А ваши команды

Open "c:\бла-бла.txt" for Input as #1

или этой
Open "c:\бла-бла-бла.txt" for Output Access Write as #1

Просмотр сообщения

используются в блоке IF ... ENDIF ?
  • 0

#3 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 30 ноября 2005 - 15:28

Естественно я хочу в идеале сделать как-нибудь так
If Open "c:ххх.txt" for Input as #1
then...
Вопрос - как?
  • 0

#4 serega

serega

    Опытный участник

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 30 ноября 2005 - 15:28

Забыл добавить :nea:

Фукции типа GetAttr не пробовали использовать ?
  • 0

#5 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 30 ноября 2005 - 15:35

Тезка, конечно пробовал, весь вопрос в том, что ОС не видет реального разграничения доступа... просто не может найти такой файл. И воспроизведение скрипта падает... :blush: Как быть.... Как вытянуть то, что робот не может произвести чт/зап в файл так, чтобы скрипт продолжал работать... :nea:
  • 0

#6 Nadezhda

Nadezhda

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • Город:Харьков

Отправлено 30 ноября 2005 - 15:50

Если вам нужно добиться, чтобы робот не прекращал выполнение скрипта при обнаружении ошибки, то вам поможет следующее:
Tools -> GUI Playback Options -> закладка Error Recovery -> в радиогруппе On Script Command Failure выбрать опцию Continue Execution (по умолчанию там выставлена Abort Playback). При этом ошибка будет записана в лог, но скрипт не остановится.
  • 0

#7 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 30 ноября 2005 - 15:59

Пасиба, попробую... а как бы вот.... чтоб он ошибку писал, если прочитает файл, а не если не найдет... впрочем, не надо, сам попробую. Пасиб еще раз
  • 0

#8 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 30 ноября 2005 - 16:09

Весь вопрос - как получить значение функции (т.е. можно обращаться к файлу или нет).

Я думаю, что так можно получить то, что Вы хотите.
   Dim objFSO as Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
...

свойства и методы здесь

Здесь пример по атрибутам
  • 0

#9 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 12:32

Результат работы с объектами

Прикрепленные файлы

  • Прикрепленный файл  RuntErr.bmp   124,74К   42 Количество загрузок:

  • 0

#10 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 01 декабря 2005 - 12:37

Вы в BTS так же развернуто пишите?
  • 0

#11 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 12:40

Меня все устраивает и в функции Open, только бы Runtime Error не вылезал. Nadezhda подсказала, как не прерывать выполнение скрипта, и он радостно продолжает выполнение, да только прям посреди воспроизведения вылезают эти сообщения (мой пост перед этим), и ето из вери бед....
  • 0

#12 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 01 декабря 2005 - 12:43

Поставте проверку на наличие файла, перед тем как его открывать.
  • 0

#13 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 12:44

Set objFSO = getobject ("c:\Blckpost\blckrwip.ini")
If (objFSO Is Nothing) then
MsgBox "!"
Exit Sub
End If

После первой строчки я и рожаю (средствами Робота) окно Runtime Error
  • 0

#14 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 12:46

Так я и пытаюсь выяснить, как это сделать, как проверить - можно ли обращаться к файлу...
  • 0

#15 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 12:49

Пробую пока через FileVP, но вся гадость в том, что Робот не будет различать - файл не существует или он к нему просто не может обратиться.
  • 0

#16 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 01 декабря 2005 - 12:59

да только прям посреди воспроизведения вылезают эти сообщения (мой пост перед этим), и ето из вери бед....

Просмотр сообщения

используйте механизм on error
  • 0

#17 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 01 декабря 2005 - 13:15

Set objFSO = getobject ("c:\Blckpost\blckrwip.ini")
    If (objFSO Is Nothing) then
    MsgBox "!"
    Exit Sub
    End If

После первой строчки я и рожаю (средствами Робота) окно Runtime Error

Просмотр сообщения

Froggy, если бы Вы были не только ленивы, но и внимательны, то заметили бы, что я советовал использовать объекты немного по другому. Я даже примеры накопал, а Вы этим не пользуетесь.

Вот код, который проверяет на наличие файла, и в случае его наличия выводит атрубуты файла.

  Dim f as string
   Dim objFSO as Object
   Dim oFile as object
   Set objFSO = CreateObject("Scripting.FileSystemObject")
'   f = "c:\zero.null" ' файл не существует
   f = "c:\Temp.txt" ' файл существует
   if not objFSO.FileExists(f) then 
    msgbox "нет такого файла """ & f & """" 
   else 
    Set oFile = objFSO.GetFile(f)
    msgbox oFile.attributes
   end if

  • 0

#18 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 13:25

Ну тот же результат при использовании конструкции

Res = FileVP (Exists, "Name=C:\еееее.ini", "ExpectedResult=Fail")

Только в одну строчку. Проблема в том, что если файл 1 существует, но доступа к нему нет, а файл 2 не существует вообще, то Робот их не разделяет - они для него просто не существует.
А с Вашим, greyver, примером я разобрался, спасибо, но с VP получается действительно покороче.
ЗЫ я не ленивый и не невнимательный, я просто не успеваю отписывать...
  • 0

#19 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 01 декабря 2005 - 13:30

ИМХО, надо бы получить результат обращения к файлу, и если доступа нет (и файл закрыт для записи, чтения...), то проанализировать значение, возвернутое функцией, записать в отчет, что РДВ проверены, багов нет и пойти пить чай (кофе, пиво, ...., С2H5OH).

Весь вопрос - как получить значение функции (т.е. можно обращаться к файлу или нет).

Как бы хелп, кто-нибудь чем-нибудь...

Просмотр сообщения

:nea:
А вот пример их хелпа робота. Похоже здесь почти то, что Вам надо.
This example tests the attributes for a file and if it is hidden, changes it to a non-hidden file. 
Sub main
   Dim filename as String
   Dim attribs, saveattribs as Integer
   Dim answer as Integer
   Dim archno as Integer
   Dim msgtext as String
   archno=32
   On Error Resume Next
   msgtext="Enter name of a file:"
   filename=InputBox(msgtext)
   attribs=GetAttr(filename)
   If Err<>0 then
      MsgBox "Error in filename. Re-run Program."
      Exit Sub
   End If
   saveattribs=attribs
   If attribs>= archno then
      attribs=attribs-archno
   End If
   Select Case attribs
      Case 2,3,6,7
         msgtext="  File: " &filename & " is hidden." & Chr(10)
         msgtext=msgtext & Chr(10) & "   Change it?"
         answer=MsgBox(msgtext,308)
         If answer=6 then
            SetAttr filename, saveattribs-2
            MsgBox "File is no longer hidden."
            Exit Sub
         End If
         MsgBox "Hidden file not changed."
      Case Else
         MsgBox "File was not hidden."
   End Select
End Sub


  • 0

#20 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 01 декабря 2005 - 13:41

Ну елы-палы, говорил же.... Ну не работают в этом случае конструкции типа

attribs=GetAttr(filename)


Не видно этот файл роботу, хотя он и существует в реальности... Посему (ИМХО) работать с конструкциями Set/GetAttr не получится. ПРОБОВАЛ УЖЕ. ЕЩЕ ПОЗАВЧЕРА. О ЧЕМ ВЧЕРА ОТВЕТИЛ ТЕЗКЕ СЕРЕГЕ
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных