Написал программу для подсчета количества листов PDF файлов. Работает корректно если в папках есть PDF файлы.
Если в папке нет PDF файла выходит ошибка:
если отсутствуют файлы PDF, то массив не образуется. Как обойти проблему?
Если в папке нет PDF файла выходит ошибка:
Код:
Subscript used with non-Array variable.:
For $j = 1 To $sFileListFull[0]
For $j = 1 To $sFileListFull^ ERROR
Код:
#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