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

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

Ответить
Настройки темы
[решено] Редактирование функции _FileListToArray()

Аватара для AzazeLHAck

Пользователь


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

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


Ребята, вот проблема:
Мне нужно сделать так, чтобы после:
Код: Выделить весь код
$nnn = _FileListToArray("Data","*",2)
если папок в папке Data нет, то чтобы он не просто возвращал 0, а вносил его так: $nnn[0] = 0
Вариант ли такое замутить..? Может можно как-нибудь отредактировать функцию _FileListToArray(), если вытащить её из File.au3..?

-------
Взломаем же систему зла!


Отправлено: 20:45, 17-01-2011

 

Аватара для kaster

Старожил


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

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


AzazeLHAck, а зачем? сделать такое можно, но для проверки разного рода условий есть разные значения @error. Вот на них и стоит ориентироваться. Делай проверку. Обычно все так делают. Но если все же тебе нужен именно тот способ что ты описал, то
Код: Выделить весь код
$nnn = _FileListToArray("Data","*",2)
If @error = 4 Then
      Dim $nnn[1] = 0
EndIf

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


Отправлено: 21:09, 17-01-2011 | #2



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

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


Аватара для AzazeLHAck

Пользователь


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

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


kaster,
Почему-то пишет Syntax error..
Общий вид таков:
Код: Выделить весь код
Func 123()
         For     to
                $nnn = _FileListToArray("Data","*",2)
                If @error = 4 Then
                        Dim $nnn[1] = 0
                EndIf
         Next
EndFunc
В чём может быть проблема..?

-------
Взломаем же систему зла!


Отправлено: 21:38, 17-01-2011 | #3


Аватара для madmasles

Ветеран


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

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


AzazeLHAck,
Попробуйте так:
Код: Выделить весь код
#include <File.au3>

Func _DirListToArray($sFullPath)
    Local $aTemp, $aReturn[1] = [0]
    $aTemp = _FileListToArray($sFullPath, '*', 2)
    If Not @error Then
        $aReturn = $aTemp
    EndIf
    Return $aReturn
EndFunc   ;==>_DirListToArray
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:05, 17-01-2011 | #4


Аватара для AzazeLHAck

Пользователь


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

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


madmasles,
Получилось! Спасибо!

-------
Взломаем же систему зла!


Отправлено: 22:23, 17-01-2011 | #5


Аватара для kaster

Старожил


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

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


Код: Выделить весь код
         For     to
так писать нельзя. отсюда и ошибка

madmasles, в твоем коде помимо случаев когда файла/папки нет обработаются и все остальные ошибки.

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


Отправлено: 22:25, 17-01-2011 | #6


Аватара для AzazeLHAck

Пользователь


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

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


Цитата kaster:
обработаются и все остальные ошибки. »
А там это не важно, там главное, чтобы работало
Цитата kaster:
так писать нельзя. отсюда и ошибка »
Пробелы не считай, это я тут понатыкал, чтобы приблизительный внешний вид придать..

-------
Взломаем же систему зла!


Отправлено: 00:40, 18-01-2011 | #7


Аватара для kaster

Старожил


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

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


Цитата AzazeLHAck:
А там это не важно, там главное, чтобы работало »
ну тогда учти, что при
а) неправильном пути
б) неправильно введенном фильре
ты будешь получить тот же результат, что при отсутствии файлов/папок в указанной папке
Цитата AzazeLHAck:
Пробелы не считай »
я говорил не про пробелы, они роли не играют. дело в структуре цикла, нельзя не указывать начальный и конечные индексы.

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


Отправлено: 00:51, 18-01-2011 | #8


Аватара для madmasles

Ветеран


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

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


kaster,
Вопрос изначально был
Цитата AzazeLHAck:
если папок в папке Data нет, то чтобы он не просто возвращал 0, а вносил его так: $nnn[0] = 0 »
Если надо обработать ошибки, то можно поменять на
Код: Выделить весь код
#include <File.au3>
#include <Array.au3>

Global $aDir, $sText = 'Все OK!'

$sPath = @DesktopDir & '\MyFolder'

$aDir = _DirListToArray($sPath)
Switch @error
    Case 1
        $sText = 'Нет такой папки.'
    Case 2
        $sText = 'Это не папка.'
    Case 4
        $sText = 'Нет папок.'
EndSwitch
_ArrayDisplay($aDir, $sText)


Func _DirListToArray($sFullPath)
    Local $aTemp, $aReturn[1] = [0]
    If Not FileExists($sFullPath) Then Return SetError(1, 0, $aReturn)
    If Not StringInStr(FileGetAttrib($sFullPath), 'D') Then Return SetError(2, 0, $aReturn)
    $aTemp = _FileListToArray($sFullPath, '*', 2)
    If Not @error Then
        $aReturn = $aTemp
    EndIf
    Return SetError(@error, 0, $aReturn)
EndFunc   ;==>_DirListToArray

Отправлено: 00:52, 18-01-2011 | #9


Аватара для kaster

Старожил


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

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


Цитата madmasles:
если папок в папке Data нет »
за него отвечает @error = 4. зачем остальные коды ошибок?

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


Отправлено: 02:53, 18-01-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Востоновить функции jenik6 Microsoft Windows 2000/XP 6 10-08-2008 11:54
Функции в gcc Dimonweb Общий по Linux 6 08-07-2004 10:07
API функции hameg Программирование и базы данных 4 09-03-2004 19:48
Функции SamLib.dll Guest Программирование и базы данных 2 03-12-2003 21:44
API функции Surround Программирование и базы данных 5 27-10-2003 00:06




 
Переход