Тема: HTA + VBS: Остановить выполнение этого сценария
Приветствую всех кто будет читать мою тему. Написал на HTA+VBS небольшое приложение, благодаря которому можно производить поиск внутри файлов или по содержимому для пользователей которые плохо дружат с Far:
1) Производит поиск по 2м основным маскам.
2) Распределение производит по месяцам.
3) Выводит первые 2 строчки там формируется название типов файлов
4) Считывает содержимое файлов в массив
5) окошки для поиска по 2м критериям.
Основа готова, остались мелкие ньюансы.
1я проблема:
В директории бывает около 10 000 файлов при загрузке программа считывает все в память, и в момент когда производится считывание, если попробовать перетащить окно программы статус пишется (Не отвечает) хотя скрипт в этот момент выполняется исправно. Как можно это исправить?
2я проблема:
После того как скрипт полностью все считал в память появляется меню выбора маски файлов обработчик выпадающего списка:
Sub MenuTypeFile1MaskOnClick()
и в момент выбора любой маски появляется ошибка: "Остановить выполнение этого сценария?..."
, если здесь мы нажимаем "Нет", то все загружается без проблем, но табличка постоянно появляется. Возможно ли может как-то изменить алгоритм что б данная табличка не появлялась, без манипуляций на пользовательской станции?
Описание процедуры:
Sub MenuTypeFile1MaskOnClick()
Dim w
dim m
Erase FileMassivMaskPath
reDim preserve FileMassivMaskPath(-1)
Erase FileMassivMaskName
reDim preserve FileMassivMaskName(-1)
Erase FileMassivMaskDate
reDim preserve FileMassivMaskDate(-1)
Erase FileMassivMaskContent
reDim preserve FileMassivMaskContent(-1)
Erase FileMassivMaskType
reDim preserve FileMassivMaskType(-1)
Dim n
Dim PovtorDate
n = -1
Dim c
Dim mtext
For i = 0 To MenuTypeFile1Mask.length-1
If MenuTypeFile1Mask(i).selected Then
if MenuTypeFile1Mask(i).Value <> "" Then
Dim objChildNode
If MenuTypeFile1Date.hasChildNodes() Then
For Each objChildNode In MenuTypeFile1Date.ChildNodes
MenuTypeFile1Date.removeChild objChildNode
Next
End If
'остановился
For w = 0 To Ubound(FileMassivPath) Step 1
objRegExp.Pattern = LCase(MenuTypeFile1Mask(i).Value)
'msgBox MenuTypeFile1Mask(i).Value
If objRegExp.Test(LCase(FileMassivName(w))) = "Истина" Then
'MsgBox "Сработало"
n = n + 1
reDim preserve FileMassivMaskPath(n)
reDim preserve FileMassivMaskName(n)
reDim preserve FileMassivMaskDate(n)
reDim preserve FileMassivMaskContent(n)
reDim preserve FileMassivMaskType(n)
FileMassivMaskPath(n) = FileMassivPath(w)
FileMassivMaskName(n) = FileMassivName(w)
FileMassivMaskDate(n) = FileMassivDate(w)
FileMassivMaskContent(n) = FileMassiveContent(w)
FileMassivMaskType(n) = FileMassiveType(w)
if n = 0 then
Dim objHTMLOptionElement0
Set objHTMLOptionElement0 = window.document.createElement("OPTION")
objHTMLOptionElement0.Text = "Выберите месяц" &VBCRLF
objHTMLOptionElement0.Value = ""
MenuTypeFile1Date.Add objHTMLOptionElement0
End If
'месяц
m = DatePart("m", FileMassivMaskDate(n))
PovtorDate = 0
'Исключение повторов в выводимом списке
if n <> 0 then
For c = 0 to Ubound(FileMassivMaskDate) - 1 Step 1
If DatePart("m", FileMassivMaskDate(c)) = m Then
PovtorDate = 1
End If
Next
End If
If PovtorDate = 0 Then
if m = 01 then
mtext = "Январь"
End If
if m = 02 then
mtext = "Февраль"
End If
if m = 03 then
mtext = "Март"
End If
if m = 04 then
mtext = "Апрель"
End If
if m = 05 then
mtext = "Май"
End If
if m = 06 then
mtext = "Июнь"
End If
if m = 07 then
mtext = "Июль"
End If
if m = 08 then
mtext = "Август"
End If
if m = 09 then
mtext = "Сентябрь"
End If
if m = 10 then
mtext = "Октябрь"
End If
if m = 11 then
mtext = "Ноябрь"
End If
if m = 12 then
mtext = "Декабрь"
End If
'MsgBox mtext
Dim objHTMLOptionElement1
Set objHTMLOptionElement1 = window.document.createElement("OPTION")
objHTMLOptionElement1.Text = mtext &VBCRLF
objHTMLOptionElement1.Value = m
MenuTypeFile1Date.Add objHTMLOptionElement1
End If
End If
Next
End If
End If
Next
End Sub

