-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
AzazeLHAck |
17-01-2011 20:45 1590977 |
Редактирование функции _FileListToArray()
Ребята, вот проблема:
Мне нужно сделать так, чтобы после:
Код:
$nnn = _FileListToArray("Data","*",2)
если папок в папке Data нет, то чтобы он не просто возвращал 0, а вносил его так: $nnn[0] = 0
Вариант ли такое замутить..? Может можно как-нибудь отредактировать функцию _FileListToArray(), если вытащить её из File.au3..?
|
AzazeLHAck, а зачем? сделать такое можно, но для проверки разного рода условий есть разные значения @error. Вот на них и стоит ориентироваться. Делай проверку. Обычно все так делают. Но если все же тебе нужен именно тот способ что ты описал, то
Код:
$nnn = _FileListToArray("Data","*",2)
If @error = 4 Then
Dim $nnn[1] = 0
EndIf
|
AzazeLHAck |
17-01-2011 21:38 1591022 |
kaster,
Почему-то пишет Syntax error.. :(
Общий вид таков:
Код:
Func 123()
For to
$nnn = _FileListToArray("Data","*",2)
If @error = 4 Then
Dim $nnn[1] = 0
EndIf
Next
EndFunc
В чём может быть проблема..?
|
AzazeLHAck,
Попробуйте так:
|
AzazeLHAck |
17-01-2011 22:23 1591060 |
madmasles,
Получилось! :) Спасибо!
|
так писать нельзя. отсюда и ошибка
madmasles, в твоем коде помимо случаев когда файла/папки нет обработаются и все остальные ошибки.
|
AzazeLHAck |
18-01-2011 00:40 1591128 |
Цитата:
Цитата kaster
обработаются и все остальные ошибки. »
|
А там это не важно, там главное, чтобы работало :)
Цитата:
Цитата kaster
так писать нельзя. отсюда и ошибка »
|
Пробелы не считай, это я тут понатыкал, чтобы приблизительный внешний вид придать..
|
Цитата:
Цитата AzazeLHAck
А там это не важно, там главное, чтобы работало »
|
ну тогда учти, что при
а) неправильном пути
б) неправильно введенном фильре
ты будешь получить тот же результат, что при отсутствии файлов/папок в указанной папке
я говорил не про пробелы, они роли не играют. дело в структуре цикла, нельзя не указывать начальный и конечные индексы.
|
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
|
Цитата:
Цитата madmasles
если папок в папке Data нет »
|
за него отвечает @error = 4. зачем остальные коды ошибок?
|
Цитата:
Цитата kaster
зачем остальные коды ошибок? »
|
Чтобы узнать причину того, почему вернулся массив с 0 в $aAr[0]. Я не знаю, что нужно автору темы вернуть, если будут другие ошибки.
|
AzazeLHAck |
18-01-2011 05:36 1591188 |
Цитата:
Цитата kaster
нельзя не указывать начальный и конечные индексы. »
|
:) Я знаю, что нельзя, я ведь написал просто, какие команды там стоят, данные нет смысла писать, они как всегда..
Цитата:
Цитата madmasles
Я не знаю, что нужно автору темы вернуть, если будут другие ошибки. »
|
Да ничего не нужно, там другие скрипты блокируют другие варианты :)
Спасибо всем, я сделал, как предложил madmasles
Код:
#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
|
Время: 17:30.
© OSzone.net 2001-