Автор Тема: Ошибка при отсутствии массива  (Прочитано 98 раз)

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

Оффлайн joparezzz [?]

  • Новичок
  • *
  • Сообщений: 62
  • Репутация: 0
  • Пол: Мужской
    • Награды
Написал программу для подсчета количества листов PDF файлов. Работает корректно если в папках есть PDF файлы.
Если в папке нет PDF файла выходит ошибка:
Subscript used with non-Array variable.:
For $j = 1 To $sFileListFull[0]
For $j = 1 To $sFileListFull^ ERROR
если отсутствуют файлы PDF, то массив не образуется. Как обойти проблему?

Код: AutoIt [Выделить]
#include <GUIListView.au3>
#include <Array.au3>
#include <FileOperations.au3>
#include <File.au3>

Global $MediaBox[100]
Global $MediaBoxEx[1][1]
Global $MediaBoxExFinal[1][1]
Global $sAllPages

$sFolder = "F:\2018\Лот А-8.19.18\ПМН"
$aFolderList = _FO_FolderSearch($sFolder, '', True, 125)
$sFileListFull = _FO_FileSearch($sFolder, 'pdf', True, 0, 1, 1, 0)
$sFileListFile = _FO_FileSearch($sFolder, 'pdf', True, 0, 2, 1, 0)

$i = 1
$t = 0

_FileList()

For $i = 1 To $aFolderList[0]
    $sFileListFull = _FO_FileSearch($aFolderList[$i], 'pdf', True, 0, 1, 1, 0)
    $sFileListFile = _FO_FileSearch($aFolderList[$i], 'pdf', True, 0, 2, 1, 0)
    _FileList()
Next

ConsoleWrite('Общее количество файлов PDF: ' & $t & @CRLF)
ConsoleWrite('Общее количество листов: ' & $sAllPages & @CRLF)

Func _PDFinfo($way_to_file)
    $chFileHnd = FileOpen($way_to_file, 0)
    Do
        $chFileTxt = FileRead($way_to_file)
    Until @error = 0
    $MediaBox = StringSplit($chFileTxt, "MediaBox", 1)
    _ArrayDelete ($MediaBox, 0)
    _ArrayDelete ($MediaBox, 0)
    ReDim $MediaBoxEx[UBound($MediaBox)][2]
    ReDim $MediaBoxExFinal[UBound($MediaBox)][3]
    For $i = 0 to Ubound($MediaBox) - 1 step 1
        $_2 = StringInStr($MediaBox[$i], " ", 0, 2)
        $_3 = StringInStr($MediaBox[$i], " ", 0, 3)
        $_res = StringInStr($MediaBox[$i], "]/Res", 0, 1)
        $MediaBoxEx[$i][0] = StringMid($MediaBox[$i], $_2, $_3-$_2)
        $MediaBoxEx[$i][1] = StringMid($MediaBox[$i], $_3, $_res-$_3)
    Next
    FileClose($chFileHnd)
    Return $MediaBoxExFinal
EndFunc

Func _FileList()
    ConsoleWrite(@TAB & "'" & $i & '.0' & @TAB & $aFolderList[$i] &  @CRLF)
    For $j = 1 To $sFileListFull[0]
        _PDFinfo ( $sFileListFull[$j] )
        $sPages = Ubound($MediaBoxExFinal)
        $sAllPages = $sAllPages + $sPages
        $t = $t + 1
        ConsoleWrite($t & @TAB & "'" & $i & '.' & $j & @TAB &  $sFileListFile[$j] & @TAB & StringStripCR($sPages) &  @CRLF)
    Next
    ConsoleWrite(@CRLF)
EndFunc
 


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

Ошибка при отсутствии массива
« Отправлен: Май 14, 2018, 13:45:22 »

Онлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 97
  • Репутация: 39
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Ошибка при отсутствии массива
« Ответ #1, Отправлен: Май 14, 2018, 14:12:53 »
Используйте IsArray для проверки переменной
Код: AutoIt [Выделить]
Func _FileList()
    If Not IsArray($sFileListFull) Then Return
    ConsoleWrite(@TAB & "'" & $i & '.0' & @TAB & $aFolderList[$i] &  @CRLF)
    For $j = 1 To $sFileListFull[0]
        _PDFinfo ( $sFileListFull[$j] )
        $sPages = Ubound($MediaBoxExFinal)
        $sAllPages = $sAllPages + $sPages
        $t = $t + 1
        ConsoleWrite($t & @TAB & "'" & $i & '.' & $j & @TAB &  $sFileListFile[$j] & @TAB & StringStripCR($sPages) &  @CRLF)
    Next
    ConsoleWrite(@CRLF)
EndFunc

Is it future or is it past?

Оффлайн joparezzz [?]

  • Новичок
  • *
  • Сообщений: 62

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Re: Ошибка при отсутствии массива
« Ответ #2, Отправлен: Май 14, 2018, 14:19:25 »
Спасибо! все работает)

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

Re: Ошибка при отсутствии массива
« Ответ #2 Отправлен: Май 14, 2018, 14:19:25 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
57 Ответов
23685 Просмотров
Последний ответ Август 03, 2010, 15:27:24
от BOOKER
2 Ответов
2136 Просмотров
Последний ответ Май 08, 2011, 17:10:44
от CreatoR
12 Ответов
5368 Просмотров
Последний ответ Сентябрь 17, 2011, 14:20:56
от madmasles
3 Ответов
2627 Просмотров
Последний ответ Март 31, 2012, 00:04:00
от Rimm
4 Ответов
2132 Просмотров
Последний ответ Декабрь 04, 2012, 21:36:35
от CreatoR
7 Ответов
3688 Просмотров
Последний ответ Июнь 16, 2013, 01:08:08
от CreatoR
3 Ответов
1832 Просмотров
Последний ответ Июнь 28, 2013, 00:25:40
от ArgoNaft
5 Ответов
3739 Просмотров
Последний ответ Ноябрь 26, 2013, 11:10:12
от InnI
4 Ответов
1416 Просмотров
Последний ответ Январь 29, 2014, 11:54:55
от Ksaan
0 Ответов
762 Просмотров
Последний ответ Июль 24, 2015, 09:16:26
от op_joke